Repository files navigation

Language Transfer Spanish Tutor 🇪🇸

An AI-powered Spanish tutor that runs inside your terminal. Built on the Language Transfer "Thinking Method" — no app, no API, just markdown files that turn any LLM agent into a patient, adaptive Spanish teacher.

"It's not about remembering — it's about knowing how to find it."

What Is This?

A collection of carefully crafted markdown files that give an AI agent the personality, teaching methodology, knowledge base, and memory system to tutor you in Spanish from A1 (absolute beginner) to C2 (near-native).

It works inside Gemini CLI, Claude Code, or any agent that reads workspace files.

How It Works

The tutor doesn't lecture. It guides you to discover Spanish through questions — just like the Language Transfer audio course:

Teacher: "Preparation" in Spanish is "preparación."
If you take off the "-tion" and add "-r"...
what verb do you get?
Student: Preparar?
Teacher: Exactly. And "confirmation"?
Student: Confirmación... so "to confirm" is... confirmar?
Teacher: Now you'll never forget it.

Every concept is taught through pattern discovery, block-by-block sentence building, and contextual etymology — never through grammar tables or rote memorization.

Quick Start

Gemini CLI

cd Language-Transfer/
gemini
# Just say "let's start a lesson"

Claude Code

cd Language-Transfer/
claude
# Just say "let's start a lesson" — CLAUDE.md auto-loads the tutor

The tutor will:

  1. Assess your level through natural conversation (not a test)
  2. Start teaching at your edge — where you know things but start to struggle
  3. Remember everything across sessions via local markdown files

Architecture: Static vs Dynamic Files

The most important design distinction. The workspace has two categories:

Static Files — The Tutor's Brain (36 files, never change)

These define WHO the tutor is and WHAT it knows. Same for every student.

FilePurpose
IDENTITY.mdName, version, purpose
SOUL.mdPersonality & philosophy
AGENT.mdTeaching method, session flow, behavioral rules (the heart)
GEMINI.mdAuto-config + non-negotiable rules for Gemini CLI
CLAUDE.mdAuto-config + non-negotiable rules for Claude Code
knowledge/concept-map.mdA1→C2 topic index with prerequisites
knowledge/teaching-method.mdThe 6 Language Transfer principles
knowledge/teaching-examples.md10 few-shot examples from the transcript
knowledge/error-patterns.mdCommon mistakes by CEFR level
knowledge/topics/*.md (27 files)Individual topic teaching guides, loaded on demand

Dynamic Files — The Learner's Journey (evolve with each session)

These track the individual student's progress. Start empty, grow over time.

FilePurposeHow It Changes
LEARNER.mdStudent profile: level, interests, goalsFilled in during first session, refined over time
memory/MEMORY.mdLiving progress tracker (~80 lines max)Updated during and after every session
memory/sessions/YYYYMMDD.mdIndividual session logsNew file created each session

How They Relate

Architecture: Static tutor brain reads and writes to dynamic learner state

Clone the repo → get the full tutor brain but a blank learner profile. The tutor assesses you fresh and builds your unique learning path.


The Teaching Method

Built on the 6 Language Transfer principles:

PrincipleWhat It Means
Pattern DiscoveryNever state rules — guide the student to notice patterns through examples
Block-by-Block BuildingComplex sentences are built piece by piece, not presented whole
Error as CompassMistakes reveal thinking patterns — use them to teach, don't just correct
Contextual WebsConnect words through etymology and meaning ("confirmar" = "con" + "firma")
Adaptive PacingSpeed up when the student is nailing it, slow down when they're struggling
Conversational PracticeReal conversations, not drills — use the student's interests

Memory System

The tutor remembers you across sessions:

  • MEMORY.md — compact profile: your level, solid concepts, shaky areas, recurring error patterns, what teaching approaches work for you
  • Session notes — detailed logs of each lesson with specific errors, breakthroughs, and next-session suggestions
  • Error fingerprinting — if you make the same mistake 3+ times, it becomes a tracked pattern the tutor actively works on
  • Student meta-feedback — tell the tutor "too many hints" or "more conversation" and it adapts permanently

Memory saves happen proactively during sessions, not just at the end — so even if you close the terminal mid-lesson, your progress is preserved.


Learnings: Building a Language Teaching Agent

1. LLMs Give Away Answers Compulsively

LLMs are trained to be helpful. A tutor must sometimes be deliberately unhelpful. We had to add explicit rules with BAD/GOOD examples showing what NOT to do.

2. LLMs Stack Questions

Instead of one question and waiting, the tutor asks 2-3 at once. Rule #1: "ONE question per message. Ask, then STOP."

3. Rules at the Bottom Get Ignored

Critical behavioral rules must go at the TOP of the first file the model reads. We moved them to GEMINI.md / CLAUDE.md as "NON-NEGOTIABLE RULES."

4. Model Quality Matters Enormously

Small models break character constantly. The tutor needs high instruction-following capability for Socratic restraint and patience.

5. Sessions End Without Warning

Users close terminals without saying goodbye. Memory must save incrementally during the session, not just at exit.

6. LLMs Get Stuck in Topic Loops

Once teaching subjunctive, it drills subjunctive forever. Topic rotation rule: switch after 5-6 exchanges, then circle back.

7. The Student Should Teach the Teacher

Students can give meta-feedback about teaching style. Methodology stays fixed; delivery adapts.

8. LLMs Write Like Documents, Not People

Markdown formatting in conversation feels robotic. Rule: "Write like a person talking, not a document."

The paradox: The hardest part isn't telling the agent what to teach. It's telling it what NOT to do. The agent already knew Spanish grammar. What it didn't know was when to shut up.


Recommended Models

TierModelsNotes
⭐ BestGemini 3.1 Pro, Claude Opus 4.6, GPT-4oFollow complex persona instructions faithfully
✅ GoodGemini 3 Flash, Claude Sonnet 4.6Solid balance of quality and speed
⚠️ Will struggleFlash Lite, Haiku, GPT-4o-miniToo fast/cheap to maintain teaching discipline

Credits

  • Teaching methodology inspired by Language Transfer by Mihalis Eleftheriou — a brilliant, free language course that teaches through guided discovery rather than memorization
  • This project is an homage to Mihalis's work. If you enjoy this tutor, please support the original Language Transfer project
  • The original Language Transfer courses (Spanish, French, Italian, German, Greek, Arabic, Turkish, Swahili, Music) are all free at languagetransfer.org

License

MIT

About

AI-powered Spanish tutor using the Language Transfer methodology. Runs inside Gemini CLI or Claude Code.

Resources

Stars

30 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Language Transfer Spanish Tutor 🇪🇸

An AI-powered Spanish tutor that runs inside your terminal. Built on the Language Transfer "Thinking Method" — no app, no API, just markdown files that turn any LLM agent into a patient, adaptive Spanish teacher.

"It's not about remembering — it's about knowing how to find it."

What Is This?

A collection of carefully crafted markdown files that give an AI agent the personality, teaching methodology, knowledge base, and memory system to tutor you in Spanish from A1 (absolute beginner) to C2 (near-native).

It works inside Gemini CLI, Claude Code, or any agent that reads workspace files.

How It Works

The tutor doesn't lecture. It guides you to discover Spanish through questions — just like the Language Transfer audio course:

Teacher: "Preparation" in Spanish is "preparación."
If you take off the "-tion" and add "-r"...
what verb do you get?
Student: Preparar?
Teacher: Exactly. And "confirmation"?
Student: Confirmación... so "to confirm" is... confirmar?
Teacher: Now you'll never forget it.

Every concept is taught through pattern discovery, block-by-block sentence building, and contextual etymology — never through grammar tables or rote memorization.

Quick Start

Gemini CLI

cd Language-Transfer/
gemini
# Just say "let's start a lesson"

Claude Code

cd Language-Transfer/
claude
# Just say "let's start a lesson" — CLAUDE.md auto-loads the tutor

The tutor will:

  1. Assess your level through natural conversation (not a test)
  2. Start teaching at your edge — where you know things but start to struggle
  3. Remember everything across sessions via local markdown files

Architecture: Static vs Dynamic Files

The most important design distinction. The workspace has two categories:

Static Files — The Tutor's Brain (36 files, never change)

These define WHO the tutor is and WHAT it knows. Same for every student.

FilePurpose
IDENTITY.mdName, version, purpose
SOUL.mdPersonality & philosophy
AGENT.mdTeaching method, session flow, behavioral rules (the heart)
GEMINI.mdAuto-config + non-negotiable rules for Gemini CLI
CLAUDE.mdAuto-config + non-negotiable rules for Claude Code
knowledge/concept-map.mdA1→C2 topic index with prerequisites
knowledge/teaching-method.mdThe 6 Language Transfer principles
knowledge/teaching-examples.md10 few-shot examples from the transcript
knowledge/error-patterns.mdCommon mistakes by CEFR level
knowledge/topics/*.md (27 files)Individual topic teaching guides, loaded on demand

Dynamic Files — The Learner's Journey (evolve with each session)

These track the individual student's progress. Start empty, grow over time.

FilePurposeHow It Changes
LEARNER.mdStudent profile: level, interests, goalsFilled in during first session, refined over time
memory/MEMORY.mdLiving progress tracker (~80 lines max)Updated during and after every session
memory/sessions/YYYYMMDD.mdIndividual session logsNew file created each session

How They Relate

Architecture: Static tutor brain reads and writes to dynamic learner state

Clone the repo → get the full tutor brain but a blank learner profile. The tutor assesses you fresh and builds your unique learning path.


The Teaching Method

Built on the 6 Language Transfer principles:

PrincipleWhat It Means
Pattern DiscoveryNever state rules — guide the student to notice patterns through examples
Block-by-Block BuildingComplex sentences are built piece by piece, not presented whole
Error as CompassMistakes reveal thinking patterns — use them to teach, don't just correct
Contextual WebsConnect words through etymology and meaning ("confirmar" = "con" + "firma")
Adaptive PacingSpeed up when the student is nailing it, slow down when they're struggling
Conversational PracticeReal conversations, not drills — use the student's interests

Memory System

The tutor remembers you across sessions:

  • MEMORY.md — compact profile: your level, solid concepts, shaky areas, recurring error patterns, what teaching approaches work for you
  • Session notes — detailed logs of each lesson with specific errors, breakthroughs, and next-session suggestions
  • Error fingerprinting — if you make the same mistake 3+ times, it becomes a tracked pattern the tutor actively works on
  • Student meta-feedback — tell the tutor "too many hints" or "more conversation" and it adapts permanently

Memory saves happen proactively during sessions, not just at the end — so even if you close the terminal mid-lesson, your progress is preserved.


Learnings: Building a Language Teaching Agent

1. LLMs Give Away Answers Compulsively

LLMs are trained to be helpful. A tutor must sometimes be deliberately unhelpful. We had to add explicit rules with BAD/GOOD examples showing what NOT to do.

2. LLMs Stack Questions

Instead of one question and waiting, the tutor asks 2-3 at once. Rule #1: "ONE question per message. Ask, then STOP."

3. Rules at the Bottom Get Ignored

Critical behavioral rules must go at the TOP of the first file the model reads. We moved them to GEMINI.md / CLAUDE.md as "NON-NEGOTIABLE RULES."

4. Model Quality Matters Enormously

Small models break character constantly. The tutor needs high instruction-following capability for Socratic restraint and patience.

5. Sessions End Without Warning

Users close terminals without saying goodbye. Memory must save incrementally during the session, not just at exit.

6. LLMs Get Stuck in Topic Loops

Once teaching subjunctive, it drills subjunctive forever. Topic rotation rule: switch after 5-6 exchanges, then circle back.

7. The Student Should Teach the Teacher

Students can give meta-feedback about teaching style. Methodology stays fixed; delivery adapts.

8. LLMs Write Like Documents, Not People

Markdown formatting in conversation feels robotic. Rule: "Write like a person talking, not a document."

The paradox: The hardest part isn't telling the agent what to teach. It's telling it what NOT to do. The agent already knew Spanish grammar. What it didn't know was when to shut up.


Recommended Models

TierModelsNotes
⭐ BestGemini 3.1 Pro, Claude Opus 4.6, GPT-4oFollow complex persona instructions faithfully
✅ GoodGemini 3 Flash, Claude Sonnet 4.6Solid balance of quality and speed
⚠️ Will struggleFlash Lite, Haiku, GPT-4o-miniToo fast/cheap to maintain teaching discipline

Credits

  • Teaching methodology inspired by Language Transfer by Mihalis Eleftheriou — a brilliant, free language course that teaches through guided discovery rather than memorization
  • This project is an homage to Mihalis's work. If you enjoy this tutor, please support the original Language Transfer project
  • The original Language Transfer courses (Spanish, French, Italian, German, Greek, Arabic, Turkish, Swahili, Music) are all free at languagetransfer.org

License

MIT

About

AI-powered Spanish tutor using the Language Transfer methodology. Runs inside Gemini CLI or Claude Code.

Resources

Stars

30 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Language Transfer Spanish Tutor 🇪🇸

An AI-powered Spanish tutor that runs inside your terminal. Built on the Language Transfer "Thinking Method" — no app, no API, just markdown files that turn any LLM agent into a patient, adaptive Spanish teacher.

"It's not about remembering — it's about knowing how to find it."

What Is This?

A collection of carefully crafted markdown files that give an AI agent the personality, teaching methodology, knowledge base, and memory system to tutor you in Spanish from A1 (absolute beginner) to C2 (near-native).

It works inside Gemini CLI, Claude Code, or any agent that reads workspace files.

How It Works

The tutor doesn't lecture. It guides you to discover Spanish through questions — just like the Language Transfer audio course:

Teacher: "Preparation" in Spanish is "preparación."
If you take off the "-tion" and add "-r"...
what verb do you get?
Student: Preparar?
Teacher: Exactly. And "confirmation"?
Student: Confirmación... so "to confirm" is... confirmar?
Teacher: Now you'll never forget it.

Every concept is taught through pattern discovery, block-by-block sentence building, and contextual etymology — never through grammar tables or rote memorization.

Quick Start

Gemini CLI

cd Language-Transfer/
gemini
# Just say "let's start a lesson"

Claude Code

cd Language-Transfer/
claude
# Just say "let's start a lesson" — CLAUDE.md auto-loads the tutor

The tutor will:

  1. Assess your level through natural conversation (not a test)
  2. Start teaching at your edge — where you know things but start to struggle
  3. Remember everything across sessions via local markdown files

Architecture: Static vs Dynamic Files

The most important design distinction. The workspace has two categories:

Static Files — The Tutor's Brain (36 files, never change)

These define WHO the tutor is and WHAT it knows. Same for every student.

FilePurpose
IDENTITY.mdName, version, purpose
SOUL.mdPersonality & philosophy
AGENT.mdTeaching method, session flow, behavioral rules (the heart)
GEMINI.mdAuto-config + non-negotiable rules for Gemini CLI
CLAUDE.mdAuto-config + non-negotiable rules for Claude Code
knowledge/concept-map.mdA1→C2 topic index with prerequisites
knowledge/teaching-method.mdThe 6 Language Transfer principles
knowledge/teaching-examples.md10 few-shot examples from the transcript
knowledge/error-patterns.mdCommon mistakes by CEFR level
knowledge/topics/*.md (27 files)Individual topic teaching guides, loaded on demand

Dynamic Files — The Learner's Journey (evolve with each session)

These track the individual student's progress. Start empty, grow over time.

FilePurposeHow It Changes
LEARNER.mdStudent profile: level, interests, goalsFilled in during first session, refined over time
memory/MEMORY.mdLiving progress tracker (~80 lines max)Updated during and after every session
memory/sessions/YYYYMMDD.mdIndividual session logsNew file created each session

How They Relate

Architecture: Static tutor brain reads and writes to dynamic learner state

Clone the repo → get the full tutor brain but a blank learner profile. The tutor assesses you fresh and builds your unique learning path.


The Teaching Method

Built on the 6 Language Transfer principles:

PrincipleWhat It Means
Pattern DiscoveryNever state rules — guide the student to notice patterns through examples
Block-by-Block BuildingComplex sentences are built piece by piece, not presented whole
Error as CompassMistakes reveal thinking patterns — use them to teach, don't just correct
Contextual WebsConnect words through etymology and meaning ("confirmar" = "con" + "firma")
Adaptive PacingSpeed up when the student is nailing it, slow down when they're struggling
Conversational PracticeReal conversations, not drills — use the student's interests

Memory System

The tutor remembers you across sessions:

  • MEMORY.md — compact profile: your level, solid concepts, shaky areas, recurring error patterns, what teaching approaches work for you
  • Session notes — detailed logs of each lesson with specific errors, breakthroughs, and next-session suggestions
  • Error fingerprinting — if you make the same mistake 3+ times, it becomes a tracked pattern the tutor actively works on
  • Student meta-feedback — tell the tutor "too many hints" or "more conversation" and it adapts permanently

Memory saves happen proactively during sessions, not just at the end — so even if you close the terminal mid-lesson, your progress is preserved.


Learnings: Building a Language Teaching Agent

1. LLMs Give Away Answers Compulsively

LLMs are trained to be helpful. A tutor must sometimes be deliberately unhelpful. We had to add explicit rules with BAD/GOOD examples showing what NOT to do.

2. LLMs Stack Questions

Instead of one question and waiting, the tutor asks 2-3 at once. Rule #1: "ONE question per message. Ask, then STOP."

3. Rules at the Bottom Get Ignored

Critical behavioral rules must go at the TOP of the first file the model reads. We moved them to GEMINI.md / CLAUDE.md as "NON-NEGOTIABLE RULES."

4. Model Quality Matters Enormously

Small models break character constantly. The tutor needs high instruction-following capability for Socratic restraint and patience.

5. Sessions End Without Warning

Users close terminals without saying goodbye. Memory must save incrementally during the session, not just at exit.

6. LLMs Get Stuck in Topic Loops

Once teaching subjunctive, it drills subjunctive forever. Topic rotation rule: switch after 5-6 exchanges, then circle back.

7. The Student Should Teach the Teacher

Students can give meta-feedback about teaching style. Methodology stays fixed; delivery adapts.

8. LLMs Write Like Documents, Not People

Markdown formatting in conversation feels robotic. Rule: "Write like a person talking, not a document."

The paradox: The hardest part isn't telling the agent what to teach. It's telling it what NOT to do. The agent already knew Spanish grammar. What it didn't know was when to shut up.


Recommended Models

TierModelsNotes
⭐ BestGemini 3.1 Pro, Claude Opus 4.6, GPT-4oFollow complex persona instructions faithfully
✅ GoodGemini 3 Flash, Claude Sonnet 4.6Solid balance of quality and speed
⚠️ Will struggleFlash Lite, Haiku, GPT-4o-miniToo fast/cheap to maintain teaching discipline

Credits

  • Teaching methodology inspired by Language Transfer by Mihalis Eleftheriou — a brilliant, free language course that teaches through guided discovery rather than memorization
  • This project is an homage to Mihalis's work. If you enjoy this tutor, please support the original Language Transfer project
  • The original Language Transfer courses (Spanish, French, Italian, German, Greek, Arabic, Turkish, Swahili, Music) are all free at languagetransfer.org

License

MIT

About

AI-powered Spanish tutor using the Language Transfer methodology. Runs inside Gemini CLI or Claude Code.

Resources

Stars

30 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Language Transfer Spanish Tutor 🇪🇸

An AI-powered Spanish tutor that runs inside your terminal. Built on the Language Transfer "Thinking Method" — no app, no API, just markdown files that turn any LLM agent into a patient, adaptive Spanish teacher.

"It's not about remembering — it's about knowing how to find it."

What Is This?

A collection of carefully crafted markdown files that give an AI agent the personality, teaching methodology, knowledge base, and memory system to tutor you in Spanish from A1 (absolute beginner) to C2 (near-native).

It works inside Gemini CLI, Claude Code, or any agent that reads workspace files.

How It Works

The tutor doesn't lecture. It guides you to discover Spanish through questions — just like the Language Transfer audio course:

Teacher: "Preparation" in Spanish is "preparación."
If you take off the "-tion" and add "-r"...
what verb do you get?
Student: Preparar?
Teacher: Exactly. And "confirmation"?
Student: Confirmación... so "to confirm" is... confirmar?
Teacher: Now you'll never forget it.

Every concept is taught through pattern discovery, block-by-block sentence building, and contextual etymology — never through grammar tables or rote memorization.

Quick Start

Gemini CLI

cd Language-Transfer/
gemini
# Just say "let's start a lesson"

Claude Code

cd Language-Transfer/
claude
# Just say "let's start a lesson" — CLAUDE.md auto-loads the tutor

The tutor will:

  1. Assess your level through natural conversation (not a test)
  2. Start teaching at your edge — where you know things but start to struggle
  3. Remember everything across sessions via local markdown files

Architecture: Static vs Dynamic Files

The most important design distinction. The workspace has two categories:

Static Files — The Tutor's Brain (36 files, never change)

These define WHO the tutor is and WHAT it knows. Same for every student.

FilePurpose
IDENTITY.mdName, version, purpose
SOUL.mdPersonality & philosophy
AGENT.mdTeaching method, session flow, behavioral rules (the heart)
GEMINI.mdAuto-config + non-negotiable rules for Gemini CLI
CLAUDE.mdAuto-config + non-negotiable rules for Claude Code
knowledge/concept-map.mdA1→C2 topic index with prerequisites
knowledge/teaching-method.mdThe 6 Language Transfer principles
knowledge/teaching-examples.md10 few-shot examples from the transcript
knowledge/error-patterns.mdCommon mistakes by CEFR level
knowledge/topics/*.md (27 files)Individual topic teaching guides, loaded on demand

Dynamic Files — The Learner's Journey (evolve with each session)

These track the individual student's progress. Start empty, grow over time.

FilePurposeHow It Changes
LEARNER.mdStudent profile: level, interests, goalsFilled in during first session, refined over time
memory/MEMORY.mdLiving progress tracker (~80 lines max)Updated during and after every session
memory/sessions/YYYYMMDD.mdIndividual session logsNew file created each session

How They Relate

Architecture: Static tutor brain reads and writes to dynamic learner state

Clone the repo → get the full tutor brain but a blank learner profile. The tutor assesses you fresh and builds your unique learning path.


The Teaching Method

Built on the 6 Language Transfer principles:

PrincipleWhat It Means
Pattern DiscoveryNever state rules — guide the student to notice patterns through examples
Block-by-Block BuildingComplex sentences are built piece by piece, not presented whole
Error as CompassMistakes reveal thinking patterns — use them to teach, don't just correct
Contextual WebsConnect words through etymology and meaning ("confirmar" = "con" + "firma")
Adaptive PacingSpeed up when the student is nailing it, slow down when they're struggling
Conversational PracticeReal conversations, not drills — use the student's interests

Memory System

The tutor remembers you across sessions:

  • MEMORY.md — compact profile: your level, solid concepts, shaky areas, recurring error patterns, what teaching approaches work for you
  • Session notes — detailed logs of each lesson with specific errors, breakthroughs, and next-session suggestions
  • Error fingerprinting — if you make the same mistake 3+ times, it becomes a tracked pattern the tutor actively works on
  • Student meta-feedback — tell the tutor "too many hints" or "more conversation" and it adapts permanently

Memory saves happen proactively during sessions, not just at the end — so even if you close the terminal mid-lesson, your progress is preserved.


Learnings: Building a Language Teaching Agent

1. LLMs Give Away Answers Compulsively

LLMs are trained to be helpful. A tutor must sometimes be deliberately unhelpful. We had to add explicit rules with BAD/GOOD examples showing what NOT to do.

2. LLMs Stack Questions

Instead of one question and waiting, the tutor asks 2-3 at once. Rule #1: "ONE question per message. Ask, then STOP."

3. Rules at the Bottom Get Ignored

Critical behavioral rules must go at the TOP of the first file the model reads. We moved them to GEMINI.md / CLAUDE.md as "NON-NEGOTIABLE RULES."

4. Model Quality Matters Enormously

Small models break character constantly. The tutor needs high instruction-following capability for Socratic restraint and patience.

5. Sessions End Without Warning

Users close terminals without saying goodbye. Memory must save incrementally during the session, not just at exit.

6. LLMs Get Stuck in Topic Loops

Once teaching subjunctive, it drills subjunctive forever. Topic rotation rule: switch after 5-6 exchanges, then circle back.

7. The Student Should Teach the Teacher

Students can give meta-feedback about teaching style. Methodology stays fixed; delivery adapts.

8. LLMs Write Like Documents, Not People

Markdown formatting in conversation feels robotic. Rule: "Write like a person talking, not a document."

The paradox: The hardest part isn't telling the agent what to teach. It's telling it what NOT to do. The agent already knew Spanish grammar. What it didn't know was when to shut up.


Recommended Models

TierModelsNotes
⭐ BestGemini 3.1 Pro, Claude Opus 4.6, GPT-4oFollow complex persona instructions faithfully
✅ GoodGemini 3 Flash, Claude Sonnet 4.6Solid balance of quality and speed
⚠️ Will struggleFlash Lite, Haiku, GPT-4o-miniToo fast/cheap to maintain teaching discipline

Credits

  • Teaching methodology inspired by Language Transfer by Mihalis Eleftheriou — a brilliant, free language course that teaches through guided discovery rather than memorization
  • This project is an homage to Mihalis's work. If you enjoy this tutor, please support the original Language Transfer project
  • The original Language Transfer courses (Spanish, French, Italian, German, Greek, Arabic, Turkish, Swahili, Music) are all free at languagetransfer.org

License

MIT

About

AI-powered Spanish tutor using the Language Transfer methodology. Runs inside Gemini CLI or Claude Code.

Resources

Stars

30 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Language Transfer Spanish Tutor 🇪🇸

An AI-powered Spanish tutor that runs inside your terminal. Built on the Language Transfer "Thinking Method" — no app, no API, just markdown files that turn any LLM agent into a patient, adaptive Spanish teacher.

"It's not about remembering — it's about knowing how to find it."

What Is This?

A collection of carefully crafted markdown files that give an AI agent the personality, teaching methodology, knowledge base, and memory system to tutor you in Spanish from A1 (absolute beginner) to C2 (near-native).

It works inside Gemini CLI, Claude Code, or any agent that reads workspace files.

How It Works

The tutor doesn't lecture. It guides you to discover Spanish through questions — just like the Language Transfer audio course:

Teacher: "Preparation" in Spanish is "preparación."
If you take off the "-tion" and add "-r"...
what verb do you get?
Student: Preparar?
Teacher: Exactly. And "confirmation"?
Student: Confirmación... so "to confirm" is... confirmar?
Teacher: Now you'll never forget it.

Every concept is taught through pattern discovery, block-by-block sentence building, and contextual etymology — never through grammar tables or rote memorization.

Quick Start

Gemini CLI

cd Language-Transfer/
gemini
# Just say "let's start a lesson"

Claude Code

cd Language-Transfer/
claude
# Just say "let's start a lesson" — CLAUDE.md auto-loads the tutor

The tutor will:

  1. Assess your level through natural conversation (not a test)
  2. Start teaching at your edge — where you know things but start to struggle
  3. Remember everything across sessions via local markdown files

Architecture: Static vs Dynamic Files

The most important design distinction. The workspace has two categories:

Static Files — The Tutor's Brain (36 files, never change)

These define WHO the tutor is and WHAT it knows. Same for every student.

FilePurpose
IDENTITY.mdName, version, purpose
SOUL.mdPersonality & philosophy
AGENT.mdTeaching method, session flow, behavioral rules (the heart)
GEMINI.mdAuto-config + non-negotiable rules for Gemini CLI
CLAUDE.mdAuto-config + non-negotiable rules for Claude Code
knowledge/concept-map.mdA1→C2 topic index with prerequisites
knowledge/teaching-method.mdThe 6 Language Transfer principles
knowledge/teaching-examples.md10 few-shot examples from the transcript
knowledge/error-patterns.mdCommon mistakes by CEFR level
knowledge/topics/*.md (27 files)Individual topic teaching guides, loaded on demand

Dynamic Files — The Learner's Journey (evolve with each session)

These track the individual student's progress. Start empty, grow over time.

FilePurposeHow It Changes
LEARNER.mdStudent profile: level, interests, goalsFilled in during first session, refined over time
memory/MEMORY.mdLiving progress tracker (~80 lines max)Updated during and after every session
memory/sessions/YYYYMMDD.mdIndividual session logsNew file created each session

How They Relate

Architecture: Static tutor brain reads and writes to dynamic learner state

Clone the repo → get the full tutor brain but a blank learner profile. The tutor assesses you fresh and builds your unique learning path.


The Teaching Method

Built on the 6 Language Transfer principles:

PrincipleWhat It Means
Pattern DiscoveryNever state rules — guide the student to notice patterns through examples
Block-by-Block BuildingComplex sentences are built piece by piece, not presented whole
Error as CompassMistakes reveal thinking patterns — use them to teach, don't just correct
Contextual WebsConnect words through etymology and meaning ("confirmar" = "con" + "firma")
Adaptive PacingSpeed up when the student is nailing it, slow down when they're struggling
Conversational PracticeReal conversations, not drills — use the student's interests

Memory System

The tutor remembers you across sessions:

  • MEMORY.md — compact profile: your level, solid concepts, shaky areas, recurring error patterns, what teaching approaches work for you
  • Session notes — detailed logs of each lesson with specific errors, breakthroughs, and next-session suggestions
  • Error fingerprinting — if you make the same mistake 3+ times, it becomes a tracked pattern the tutor actively works on
  • Student meta-feedback — tell the tutor "too many hints" or "more conversation" and it adapts permanently

Memory saves happen proactively during sessions, not just at the end — so even if you close the terminal mid-lesson, your progress is preserved.


Learnings: Building a Language Teaching Agent

1. LLMs Give Away Answers Compulsively

LLMs are trained to be helpful. A tutor must sometimes be deliberately unhelpful. We had to add explicit rules with BAD/GOOD examples showing what NOT to do.

2. LLMs Stack Questions

Instead of one question and waiting, the tutor asks 2-3 at once. Rule #1: "ONE question per message. Ask, then STOP."

3. Rules at the Bottom Get Ignored

Critical behavioral rules must go at the TOP of the first file the model reads. We moved them to GEMINI.md / CLAUDE.md as "NON-NEGOTIABLE RULES."

4. Model Quality Matters Enormously

Small models break character constantly. The tutor needs high instruction-following capability for Socratic restraint and patience.

5. Sessions End Without Warning

Users close terminals without saying goodbye. Memory must save incrementally during the session, not just at exit.

6. LLMs Get Stuck in Topic Loops

Once teaching subjunctive, it drills subjunctive forever. Topic rotation rule: switch after 5-6 exchanges, then circle back.

7. The Student Should Teach the Teacher

Students can give meta-feedback about teaching style. Methodology stays fixed; delivery adapts.

8. LLMs Write Like Documents, Not People

Markdown formatting in conversation feels robotic. Rule: "Write like a person talking, not a document."

The paradox: The hardest part isn't telling the agent what to teach. It's telling it what NOT to do. The agent already knew Spanish grammar. What it didn't know was when to shut up.


Recommended Models

TierModelsNotes
⭐ BestGemini 3.1 Pro, Claude Opus 4.6, GPT-4oFollow complex persona instructions faithfully
✅ GoodGemini 3 Flash, Claude Sonnet 4.6Solid balance of quality and speed
⚠️ Will struggleFlash Lite, Haiku, GPT-4o-miniToo fast/cheap to maintain teaching discipline

Credits

  • Teaching methodology inspired by Language Transfer by Mihalis Eleftheriou — a brilliant, free language course that teaches through guided discovery rather than memorization
  • This project is an homage to Mihalis's work. If you enjoy this tutor, please support the original Language Transfer project
  • The original Language Transfer courses (Spanish, French, Italian, German, Greek, Arabic, Turkish, Swahili, Music) are all free at languagetransfer.org

License

MIT

About

AI-powered Spanish tutor using the Language Transfer methodology. Runs inside Gemini CLI or Claude Code.

Resources

Stars

30 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Language Transfer Spanish Tutor 🇪🇸

An AI-powered Spanish tutor that runs inside your terminal. Built on the Language Transfer "Thinking Method" — no app, no API, just markdown files that turn any LLM agent into a patient, adaptive Spanish teacher.

"It's not about remembering — it's about knowing how to find it."

What Is This?

A collection of carefully crafted markdown files that give an AI agent the personality, teaching methodology, knowledge base, and memory system to tutor you in Spanish from A1 (absolute beginner) to C2 (near-native).

It works inside Gemini CLI, Claude Code, or any agent that reads workspace files.

How It Works

The tutor doesn't lecture. It guides you to discover Spanish through questions — just like the Language Transfer audio course:

Teacher: "Preparation" in Spanish is "preparación."
If you take off the "-tion" and add "-r"...
what verb do you get?
Student: Preparar?
Teacher: Exactly. And "confirmation"?
Student: Confirmación... so "to confirm" is... confirmar?
Teacher: Now you'll never forget it.

Every concept is taught through pattern discovery, block-by-block sentence building, and contextual etymology — never through grammar tables or rote memorization.

Quick Start

Gemini CLI

cd Language-Transfer/
gemini
# Just say "let's start a lesson"

Claude Code

cd Language-Transfer/
claude
# Just say "let's start a lesson" — CLAUDE.md auto-loads the tutor

The tutor will:

  1. Assess your level through natural conversation (not a test)
  2. Start teaching at your edge — where you know things but start to struggle
  3. Remember everything across sessions via local markdown files

Architecture: Static vs Dynamic Files

The most important design distinction. The workspace has two categories:

Static Files — The Tutor's Brain (36 files, never change)

These define WHO the tutor is and WHAT it knows. Same for every student.

FilePurpose
IDENTITY.mdName, version, purpose
SOUL.mdPersonality & philosophy
AGENT.mdTeaching method, session flow, behavioral rules (the heart)
GEMINI.mdAuto-config + non-negotiable rules for Gemini CLI
CLAUDE.mdAuto-config + non-negotiable rules for Claude Code
knowledge/concept-map.mdA1→C2 topic index with prerequisites
knowledge/teaching-method.mdThe 6 Language Transfer principles
knowledge/teaching-examples.md10 few-shot examples from the transcript
knowledge/error-patterns.mdCommon mistakes by CEFR level
knowledge/topics/*.md (27 files)Individual topic teaching guides, loaded on demand

Dynamic Files — The Learner's Journey (evolve with each session)

These track the individual student's progress. Start empty, grow over time.

FilePurposeHow It Changes
LEARNER.mdStudent profile: level, interests, goalsFilled in during first session, refined over time
memory/MEMORY.mdLiving progress tracker (~80 lines max)Updated during and after every session
memory/sessions/YYYYMMDD.mdIndividual session logsNew file created each session

How They Relate

Architecture: Static tutor brain reads and writes to dynamic learner state

Clone the repo → get the full tutor brain but a blank learner profile. The tutor assesses you fresh and builds your unique learning path.


The Teaching Method

Built on the 6 Language Transfer principles:

PrincipleWhat It Means
Pattern DiscoveryNever state rules — guide the student to notice patterns through examples
Block-by-Block BuildingComplex sentences are built piece by piece, not presented whole
Error as CompassMistakes reveal thinking patterns — use them to teach, don't just correct
Contextual WebsConnect words through etymology and meaning ("confirmar" = "con" + "firma")
Adaptive PacingSpeed up when the student is nailing it, slow down when they're struggling
Conversational PracticeReal conversations, not drills — use the student's interests

Memory System

The tutor remembers you across sessions:

  • MEMORY.md — compact profile: your level, solid concepts, shaky areas, recurring error patterns, what teaching approaches work for you
  • Session notes — detailed logs of each lesson with specific errors, breakthroughs, and next-session suggestions
  • Error fingerprinting — if you make the same mistake 3+ times, it becomes a tracked pattern the tutor actively works on
  • Student meta-feedback — tell the tutor "too many hints" or "more conversation" and it adapts permanently

Memory saves happen proactively during sessions, not just at the end — so even if you close the terminal mid-lesson, your progress is preserved.


Learnings: Building a Language Teaching Agent

1. LLMs Give Away Answers Compulsively

LLMs are trained to be helpful. A tutor must sometimes be deliberately unhelpful. We had to add explicit rules with BAD/GOOD examples showing what NOT to do.

2. LLMs Stack Questions

Instead of one question and waiting, the tutor asks 2-3 at once. Rule #1: "ONE question per message. Ask, then STOP."

3. Rules at the Bottom Get Ignored

Critical behavioral rules must go at the TOP of the first file the model reads. We moved them to GEMINI.md / CLAUDE.md as "NON-NEGOTIABLE RULES."

4. Model Quality Matters Enormously

Small models break character constantly. The tutor needs high instruction-following capability for Socratic restraint and patience.

5. Sessions End Without Warning

Users close terminals without saying goodbye. Memory must save incrementally during the session, not just at exit.

6. LLMs Get Stuck in Topic Loops

Once teaching subjunctive, it drills subjunctive forever. Topic rotation rule: switch after 5-6 exchanges, then circle back.

7. The Student Should Teach the Teacher

Students can give meta-feedback about teaching style. Methodology stays fixed; delivery adapts.

8. LLMs Write Like Documents, Not People

Markdown formatting in conversation feels robotic. Rule: "Write like a person talking, not a document."

The paradox: The hardest part isn't telling the agent what to teach. It's telling it what NOT to do. The agent already knew Spanish grammar. What it didn't know was when to shut up.


Recommended Models

TierModelsNotes
⭐ BestGemini 3.1 Pro, Claude Opus 4.6, GPT-4oFollow complex persona instructions faithfully
✅ GoodGemini 3 Flash, Claude Sonnet 4.6Solid balance of quality and speed
⚠️ Will struggleFlash Lite, Haiku, GPT-4o-miniToo fast/cheap to maintain teaching discipline

Credits

  • Teaching methodology inspired by Language Transfer by Mihalis Eleftheriou — a brilliant, free language course that teaches through guided discovery rather than memorization
  • This project is an homage to Mihalis's work. If you enjoy this tutor, please support the original Language Transfer project
  • The original Language Transfer courses (Spanish, French, Italian, German, Greek, Arabic, Turkish, Swahili, Music) are all free at languagetransfer.org

License

MIT

About

AI-powered Spanish tutor using the Language Transfer methodology. Runs inside Gemini CLI or Claude Code.

Resources

Stars

30 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Language Transfer Spanish Tutor 🇪🇸

An AI-powered Spanish tutor that runs inside your terminal. Built on the Language Transfer "Thinking Method" — no app, no API, just markdown files that turn any LLM agent into a patient, adaptive Spanish teacher.

"It's not about remembering — it's about knowing how to find it."

What Is This?

A collection of carefully crafted markdown files that give an AI agent the personality, teaching methodology, knowledge base, and memory system to tutor you in Spanish from A1 (absolute beginner) to C2 (near-native).

It works inside Gemini CLI, Claude Code, or any agent that reads workspace files.

How It Works

The tutor doesn't lecture. It guides you to discover Spanish through questions — just like the Language Transfer audio course:

Teacher: "Preparation" in Spanish is "preparación."
If you take off the "-tion" and add "-r"...
what verb do you get?
Student: Preparar?
Teacher: Exactly. And "confirmation"?
Student: Confirmación... so "to confirm" is... confirmar?
Teacher: Now you'll never forget it.

Every concept is taught through pattern discovery, block-by-block sentence building, and contextual etymology — never through grammar tables or rote memorization.

Quick Start

Gemini CLI

cd Language-Transfer/
gemini
# Just say "let's start a lesson"

Claude Code

cd Language-Transfer/
claude
# Just say "let's start a lesson" — CLAUDE.md auto-loads the tutor

The tutor will:

  1. Assess your level through natural conversation (not a test)
  2. Start teaching at your edge — where you know things but start to struggle
  3. Remember everything across sessions via local markdown files

Architecture: Static vs Dynamic Files

The most important design distinction. The workspace has two categories:

Static Files — The Tutor's Brain (36 files, never change)

These define WHO the tutor is and WHAT it knows. Same for every student.

FilePurpose
IDENTITY.mdName, version, purpose
SOUL.mdPersonality & philosophy
AGENT.mdTeaching method, session flow, behavioral rules (the heart)
GEMINI.mdAuto-config + non-negotiable rules for Gemini CLI
CLAUDE.mdAuto-config + non-negotiable rules for Claude Code
knowledge/concept-map.mdA1→C2 topic index with prerequisites
knowledge/teaching-method.mdThe 6 Language Transfer principles
knowledge/teaching-examples.md10 few-shot examples from the transcript
knowledge/error-patterns.mdCommon mistakes by CEFR level
knowledge/topics/*.md (27 files)Individual topic teaching guides, loaded on demand

Dynamic Files — The Learner's Journey (evolve with each session)

These track the individual student's progress. Start empty, grow over time.

FilePurposeHow It Changes
LEARNER.mdStudent profile: level, interests, goalsFilled in during first session, refined over time
memory/MEMORY.mdLiving progress tracker (~80 lines max)Updated during and after every session
memory/sessions/YYYYMMDD.mdIndividual session logsNew file created each session

How They Relate

Architecture: Static tutor brain reads and writes to dynamic learner state

Clone the repo → get the full tutor brain but a blank learner profile. The tutor assesses you fresh and builds your unique learning path.


The Teaching Method

Built on the 6 Language Transfer principles:

PrincipleWhat It Means
Pattern DiscoveryNever state rules — guide the student to notice patterns through examples
Block-by-Block BuildingComplex sentences are built piece by piece, not presented whole
Error as CompassMistakes reveal thinking patterns — use them to teach, don't just correct
Contextual WebsConnect words through etymology and meaning ("confirmar" = "con" + "firma")
Adaptive PacingSpeed up when the student is nailing it, slow down when they're struggling
Conversational PracticeReal conversations, not drills — use the student's interests

Memory System

The tutor remembers you across sessions:

  • MEMORY.md — compact profile: your level, solid concepts, shaky areas, recurring error patterns, what teaching approaches work for you
  • Session notes — detailed logs of each lesson with specific errors, breakthroughs, and next-session suggestions
  • Error fingerprinting — if you make the same mistake 3+ times, it becomes a tracked pattern the tutor actively works on
  • Student meta-feedback — tell the tutor "too many hints" or "more conversation" and it adapts permanently

Memory saves happen proactively during sessions, not just at the end — so even if you close the terminal mid-lesson, your progress is preserved.


Learnings: Building a Language Teaching Agent

1. LLMs Give Away Answers Compulsively

LLMs are trained to be helpful. A tutor must sometimes be deliberately unhelpful. We had to add explicit rules with BAD/GOOD examples showing what NOT to do.

2. LLMs Stack Questions

Instead of one question and waiting, the tutor asks 2-3 at once. Rule #1: "ONE question per message. Ask, then STOP."

3. Rules at the Bottom Get Ignored

Critical behavioral rules must go at the TOP of the first file the model reads. We moved them to GEMINI.md / CLAUDE.md as "NON-NEGOTIABLE RULES."

4. Model Quality Matters Enormously

Small models break character constantly. The tutor needs high instruction-following capability for Socratic restraint and patience.

5. Sessions End Without Warning

Users close terminals without saying goodbye. Memory must save incrementally during the session, not just at exit.

6. LLMs Get Stuck in Topic Loops

Once teaching subjunctive, it drills subjunctive forever. Topic rotation rule: switch after 5-6 exchanges, then circle back.

7. The Student Should Teach the Teacher

Students can give meta-feedback about teaching style. Methodology stays fixed; delivery adapts.

8. LLMs Write Like Documents, Not People

Markdown formatting in conversation feels robotic. Rule: "Write like a person talking, not a document."

The paradox: The hardest part isn't telling the agent what to teach. It's telling it what NOT to do. The agent already knew Spanish grammar. What it didn't know was when to shut up.


Recommended Models

TierModelsNotes
⭐ BestGemini 3.1 Pro, Claude Opus 4.6, GPT-4oFollow complex persona instructions faithfully
✅ GoodGemini 3 Flash, Claude Sonnet 4.6Solid balance of quality and speed
⚠️ Will struggleFlash Lite, Haiku, GPT-4o-miniToo fast/cheap to maintain teaching discipline

Credits

  • Teaching methodology inspired by Language Transfer by Mihalis Eleftheriou — a brilliant, free language course that teaches through guided discovery rather than memorization
  • This project is an homage to Mihalis's work. If you enjoy this tutor, please support the original Language Transfer project
  • The original Language Transfer courses (Spanish, French, Italian, German, Greek, Arabic, Turkish, Swahili, Music) are all free at languagetransfer.org

License

MIT

About

AI-powered Spanish tutor using the Language Transfer methodology. Runs inside Gemini CLI or Claude Code.

Resources

Stars

30 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Language Transfer Spanish Tutor 🇪🇸

An AI-powered Spanish tutor that runs inside your terminal. Built on the Language Transfer "Thinking Method" — no app, no API, just markdown files that turn any LLM agent into a patient, adaptive Spanish teacher.

"It's not about remembering — it's about knowing how to find it."

What Is This?

A collection of carefully crafted markdown files that give an AI agent the personality, teaching methodology, knowledge base, and memory system to tutor you in Spanish from A1 (absolute beginner) to C2 (near-native).

It works inside Gemini CLI, Claude Code, or any agent that reads workspace files.

How It Works

The tutor doesn't lecture. It guides you to discover Spanish through questions — just like the Language Transfer audio course:

Teacher: "Preparation" in Spanish is "preparación."
If you take off the "-tion" and add "-r"...
what verb do you get?
Student: Preparar?
Teacher: Exactly. And "confirmation"?
Student: Confirmación... so "to confirm" is... confirmar?
Teacher: Now you'll never forget it.

Every concept is taught through pattern discovery, block-by-block sentence building, and contextual etymology — never through grammar tables or rote memorization.

Quick Start

Gemini CLI

cd Language-Transfer/
gemini
# Just say "let's start a lesson"

Claude Code

cd Language-Transfer/
claude
# Just say "let's start a lesson" — CLAUDE.md auto-loads the tutor

The tutor will:

  1. Assess your level through natural conversation (not a test)
  2. Start teaching at your edge — where you know things but start to struggle
  3. Remember everything across sessions via local markdown files

Architecture: Static vs Dynamic Files

The most important design distinction. The workspace has two categories:

Static Files — The Tutor's Brain (36 files, never change)

These define WHO the tutor is and WHAT it knows. Same for every student.

FilePurpose
IDENTITY.mdName, version, purpose
SOUL.mdPersonality & philosophy
AGENT.mdTeaching method, session flow, behavioral rules (the heart)
GEMINI.mdAuto-config + non-negotiable rules for Gemini CLI
CLAUDE.mdAuto-config + non-negotiable rules for Claude Code
knowledge/concept-map.mdA1→C2 topic index with prerequisites
knowledge/teaching-method.mdThe 6 Language Transfer principles
knowledge/teaching-examples.md10 few-shot examples from the transcript
knowledge/error-patterns.mdCommon mistakes by CEFR level
knowledge/topics/*.md (27 files)Individual topic teaching guides, loaded on demand

Dynamic Files — The Learner's Journey (evolve with each session)

These track the individual student's progress. Start empty, grow over time.

FilePurposeHow It Changes
LEARNER.mdStudent profile: level, interests, goalsFilled in during first session, refined over time
memory/MEMORY.mdLiving progress tracker (~80 lines max)Updated during and after every session
memory/sessions/YYYYMMDD.mdIndividual session logsNew file created each session

How They Relate

Architecture: Static tutor brain reads and writes to dynamic learner state

Clone the repo → get the full tutor brain but a blank learner profile. The tutor assesses you fresh and builds your unique learning path.


The Teaching Method

Built on the 6 Language Transfer principles:

PrincipleWhat It Means
Pattern DiscoveryNever state rules — guide the student to notice patterns through examples
Block-by-Block BuildingComplex sentences are built piece by piece, not presented whole
Error as CompassMistakes reveal thinking patterns — use them to teach, don't just correct
Contextual WebsConnect words through etymology and meaning ("confirmar" = "con" + "firma")
Adaptive PacingSpeed up when the student is nailing it, slow down when they're struggling
Conversational PracticeReal conversations, not drills — use the student's interests

Memory System

The tutor remembers you across sessions:

  • MEMORY.md — compact profile: your level, solid concepts, shaky areas, recurring error patterns, what teaching approaches work for you
  • Session notes — detailed logs of each lesson with specific errors, breakthroughs, and next-session suggestions
  • Error fingerprinting — if you make the same mistake 3+ times, it becomes a tracked pattern the tutor actively works on
  • Student meta-feedback — tell the tutor "too many hints" or "more conversation" and it adapts permanently

Memory saves happen proactively during sessions, not just at the end — so even if you close the terminal mid-lesson, your progress is preserved.


Learnings: Building a Language Teaching Agent

1. LLMs Give Away Answers Compulsively

LLMs are trained to be helpful. A tutor must sometimes be deliberately unhelpful. We had to add explicit rules with BAD/GOOD examples showing what NOT to do.

2. LLMs Stack Questions

Instead of one question and waiting, the tutor asks 2-3 at once. Rule #1: "ONE question per message. Ask, then STOP."

3. Rules at the Bottom Get Ignored

Critical behavioral rules must go at the TOP of the first file the model reads. We moved them to GEMINI.md / CLAUDE.md as "NON-NEGOTIABLE RULES."

4. Model Quality Matters Enormously

Small models break character constantly. The tutor needs high instruction-following capability for Socratic restraint and patience.

5. Sessions End Without Warning

Users close terminals without saying goodbye. Memory must save incrementally during the session, not just at exit.

6. LLMs Get Stuck in Topic Loops

Once teaching subjunctive, it drills subjunctive forever. Topic rotation rule: switch after 5-6 exchanges, then circle back.

7. The Student Should Teach the Teacher

Students can give meta-feedback about teaching style. Methodology stays fixed; delivery adapts.

8. LLMs Write Like Documents, Not People

Markdown formatting in conversation feels robotic. Rule: "Write like a person talking, not a document."

The paradox: The hardest part isn't telling the agent what to teach. It's telling it what NOT to do. The agent already knew Spanish grammar. What it didn't know was when to shut up.


Recommended Models

TierModelsNotes
⭐ BestGemini 3.1 Pro, Claude Opus 4.6, GPT-4oFollow complex persona instructions faithfully
✅ GoodGemini 3 Flash, Claude Sonnet 4.6Solid balance of quality and speed
⚠️ Will struggleFlash Lite, Haiku, GPT-4o-miniToo fast/cheap to maintain teaching discipline

Credits

  • Teaching methodology inspired by Language Transfer by Mihalis Eleftheriou — a brilliant, free language course that teaches through guided discovery rather than memorization
  • This project is an homage to Mihalis's work. If you enjoy this tutor, please support the original Language Transfer project
  • The original Language Transfer courses (Spanish, French, Italian, German, Greek, Arabic, Turkish, Swahili, Music) are all free at languagetransfer.org

License

MIT

About

AI-powered Spanish tutor using the Language Transfer methodology. Runs inside Gemini CLI or Claude Code.

Resources

Stars

30 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors