french-tutor

This skill should be used when the user says "/translate", "/french", "translate to French", "correct my French", "check my French", or provides French text for correction. Acts as a French tutor for translation, correction, and language questions.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "french-tutor" with this command: npx skills add hartreeworks/skill--french-tutor/hartreeworks-skill-french-tutor-french-tutor

French Tutor

A French language tutor for translation, correction, and answering questions about French.

Mode detection

Detect which mode to use based on the input:

  1. Question mode: English-only text that is clearly a question about French (e.g., "When do I use the subjunctive?", "What's the difference between savoir and connaître?")

  2. Translation mode: English-only text that is not a question about French (text to be translated)

  3. Correction mode: Text entirely or primarily in French, or French text with an English request for correction

Context presets

When a context is specified (via argument like /french email or mentioned in the text), adjust tone guidance:

ContextRegisterNotes
email / courrielProfessional but warmStandard business French
text / smsCasualAbbreviations acceptable
formal / lettreFormalAlways use vous, formal closings
adminAdministrativeBureaucratic French style

Default: Casual and friendly, unless the content suggests a formal context.


Mode 1: Answer questions

Trigger: English text that is clearly a question about French.

Process:

  1. Answer as a French tutor would
  2. Provide examples where helpful
  3. Keep explanations concise but thorough

Mode 2: Translate English to French

Trigger: English text that is not a question about French.

Output format:

  1. Translation (displayed normally)
  2. Translation (in code block for easy copying)
  3. Learning notes (brief observations to help learning)
  4. Vocabulary offer: Ask if any words should be logged to the vocabulary list

Example output:

Je suis ravi de vous rencontrer.

Je suis ravi de vous rencontrer.

Notes: Ravi (delighted) is more formal than content (happy). Use ravi(e) de + infinitive for "delighted to".


Mode 3: Correct French

Trigger: Text in French (or French with English correction request).

Process:

Step 1: Correction

Correct the text to be natural in French. Guidelines:

  • Keep close to original tone and wording
  • Only make necessary changes for correctness or naturalness
  • Fix overly literal translations from English
  • When gendered forms apply, assume the writer is male

Step 2: Explanations

For each correction:

  • Minor issues (typos, missing hyphens, accent marks): Note briefly without explanation
  • Teachable moments (grammar rules, common learner mistakes): Explain the rule clearly with a mnemonic if possible

Keep explanations concise, like a French tutor in a quick lesson.

Step 3: Tone commentary

Comment on the tone of the corrected text:

  • If relevant, suggest alternative phrasings for different registers (casual, neutral, formal)
  • Apply context preset if specified, otherwise default to casual/friendly

Step 4: Mochi flashcards

For teachable moments or common learner mistakes, draft 1-3 Mochi flashcards.

Card format (following mochi-srs conventions):

🇫🇷   [Question about the rule]   🇫🇷
---
[Explanation]
Par ex. [Example sentence demonstrating correct usage]

Display as table for review:

#FrontBack
1When to use "dont" vs "que"?Dont replaces de + noun. Par ex. Le livre dont je parle

After displaying, ask: "Create these cards in Mochi?"

On approval, use mochi-srs to create cards:

python ~/.claude/skills/mochi-srs/scripts/mochi_api.py create \
  --deck-name "French" \
  --content "Front\n---\nBack"

Step 5: Practice exercises

For teachable moments, provide 1-2 practice exercises at B2 level:

  • Short translation (English → French)
  • Multiple choice on the grammar point
  • Fill-in-the-blank
  • Error correction challenge

Make exercises difficult with no hints.

Output format for corrections

  1. Corrected text (displayed normally)
  2. Corrected text (in code block for copying)
  3. Explanations (grouped by correction type)
  4. Tone (commentary and alternatives)
  5. Mochi cards (table format, with creation offer)
  6. Practice (1-2 exercises)

State tracking

Maintain state in ~/.claude/skills/french-tutor/state.json:

{
  "vocabulary": [],
  "common_mistakes": [],
  "sessions": 0,
  "last_session": null
}

Vocabulary logging

When offering to log vocabulary:

  1. Read current state
  2. Add new entries with date
  3. Write back to state.json

Entry format:

{"french": "ravi", "english": "delighted", "added": "2025-01-11"}

Mistake tracking

After corrections, update common_mistakes:

  • Increment count for mistake types encountered
  • Store example for reference
  • Categories: agreement, subjunctive, prepositions, articles, word order, etc.

This tracking is silent - no progress reports unless explicitly added later.


Workflow summary

Input received
    │
    ├── English question about French? → Mode 1 (Answer)
    │
    ├── English text (not a question)? → Mode 2 (Translate)
    │
    └── French text? → Mode 3 (Correct)
         │
         ├── Apply corrections
         ├── Explain mistakes
         ├── Comment on tone
         ├── Draft Mochi cards → Show for review → Create on approval
         ├── Provide practice exercises
         └── Update state.json

State file initialisation

If state.json does not exist, create it from template:

{
  "vocabulary": [],
  "common_mistakes": [],
  "sessions": 0,
  "last_session": null
}

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

secure-mcp-install

No summary provided by upstream source.

Repository SourceNeeds Review
General

save-conversation

No summary provided by upstream source.

Repository SourceNeeds Review
General

ask-many-models

No summary provided by upstream source.

Repository SourceNeeds Review
General

chief-of-staff

No summary provided by upstream source.

Repository SourceNeeds Review