prompt-language-coach
English | 中文
An always-on language coach for AI editors — improve any target language while you work in Codex, Claude Code, or Cursor.

What it does
Prompt Language Coach works natively in Codex, Claude Code, and Cursor.
Every message you send is coached before the real model answer:
- Writing in your target language? → Get grammar fixes + natural native-like expressions
- Writing in your native language? → Get one clean, natural target-language version
- Mixed? → Get a complete natural version of the whole meaning
The coaching core supports:
everyday
scored-writing
scored-speaking
review
Works for any language pair: Chinese → English, Japanese → English, Spanish → French, etc.
Why people install it:
- Always-on coaching — every prompt becomes a language practice rep
- Any language pair — not limited to English learners
- IELTS depth when needed — switch from lightweight correction to exam-oriented practice
- Vocab focus — automatically tracks words you struggle with (
gap, correction, upgrade) and promotes them to mastered after 3 correct uses
| Platform | Native integration | Status |
|---|
| Codex | .codex-plugin + UserPromptSubmit hook | First-class |
| Claude Code | .claude-plugin + UserPromptSubmit hook | First-class |
| Cursor | .cursor-plugin / rule-based session integration | First-class |
Demo
Every message you send gets coached before the assistant answers. The coaching appears in a visual box so it never blends with the actual answer.
Everyday mode — you write:
"I want to know how can i to fix this bug in my code"
The assistant coaches first, then answers:
╭─ 📚 English Coaching ─────────────────────
│ 原文: "I want to know how can i to fix this bug"
│ 纠正: "I want to know how I can fix this bug"
│ 更自然: "How do I fix this bug?" / "Can you help me debug this?"
│ 关键点: modal verb + bare infinitive — "can fix", not "can to fix"
╰────────────────────────────────────────────
(Claude's actual answer follows here)
Scored Writing mode — you write:
"The environment is very important and we should protect it because many reason."
The assistant coaches:
╭─ 📚 English · Scored Writing ─────────────
│ Estimate: 5.0–5.5
│ 亮点: 主题明确,有因果逻辑意识
│ 扣分项: "many reason" → "many reasons";论点空洞,缺乏具体论据
│ 高分改写: "Environmental protection is critical, as unchecked
│ pollution threatens biodiversity and public health."
│ 可复用句式: "[Topic] is critical, as [specific consequence]."
│ 练习: 用上面句式写一句关于 education 的句子
╰────────────────────────────────────────────
(Claude's actual answer follows here)
Installation
Codex
Prerequisites: python3
Add the repository as a Codex marketplace source:
codex marketplace add leeguooooo/prompt-language-coach
git -C ~/.codex/.tmp/marketplaces/prompt-language-coach pull --ff-only
Then install the marketplace bundle into Codex's active plugin directory:
git -C ~/.codex/.tmp/marketplaces/prompt-language-coach pull --ff-only
python3 ~/.codex/.tmp/marketplaces/prompt-language-coach/plugins/prompt-language-coach/scripts/install_codex_plugin.py
Then restart Codex and run:
$language-coach setup
The setup flow writes ~/.codex/language-coach.json and installs the Codex UserPromptSubmit hook automatically.
Upgrading from 0.8.x on Codex
0.9.0 changes where the coaching instructions live so they stop showing up as a visible "hook context:" block every turn. After pulling the new release, re-run the bundle installer so Codex picks up the updated hook and seeds ~/.codex/AGENTS.md:
git -C ~/.codex/.tmp/marketplaces/prompt-language-coach pull --ff-only
python3 ~/.codex/.tmp/marketplaces/prompt-language-coach/plugins/prompt-language-coach/scripts/install_codex_plugin.py
Restart Codex. The next prompt will show only a tiny progress note in the hook context cell; the full teaching rules are loaded silently from ~/.codex/AGENTS.md. A one-time backup is saved beside it as AGENTS.md.backup-prompt-language-coach.* the first time the file is touched.
Claude Code
Prerequisites: python3
/plugin marketplace add leeguooooo/plugins
/plugin install language-coach@leeguooooo-plugins
/reload-plugins
/language-coach:language-coach setup
Cursor
Prerequisites: python3
Install from the Cursor plugin marketplace, or add the marketplace repo directly:
- Open Cursor Settings → Plugins → Marketplace
- Add marketplace:
https://github.com/leeguooooo/plugins
- Install language-coach
Then run the setup command in Cursor's AI panel:
/language-coach setup
The setup wizard asks your native language, target language, goal, style, and response language — same as Claude Code. The resulting config is stored in the shared file ~/.prompt-language-coach/language-coach.json and mirrored to ~/.cursor/language-coach.json. The setup flow also installs the Cursor sessionStart hook into ~/.cursor/hooks.json — plugin-manifest hooks are unreliable on some Cursor releases, so the top-level entry is what actually fires.
Upgrading from 0.9.x on Cursor
If your coaching stopped appearing after upgrading, re-run setup once so the top-level hook is installed:
/language-coach setup
Or install the hook directly:
python3 ~/.cursor/extensions/<your-cursor-plugin-path>/scripts/manage_language_coach.py --platform cursor install-hook
Verify with $language-coach hook-status (or /language-coach hook-status).
Setup and usage
Codex setup
Run $language-coach setup and answer the onboarding questions.
On Codex, the setup flow also installs the automatic UserPromptSubmit hook so coaching starts on every prompt right away. Config is stored in the shared file ~/.prompt-language-coach/language-coach.json and mirrored to ~/.codex/language-coach.json.
Claude Code setup
Run /language-coach:language-coach setup and answer the onboarding questions:
- What is your native language?
- What language are you learning?
- What is your main goal? (
everyday / scored)
- Which coaching style? (
teaching / concise / translate)
- Which response language should be used after coaching? (
native / target)
If you choose scored, the setup flow also stores:
- Active scored mode:
scored-writing or scored-speaking
- Scoring focus:
writing, speaking, or both
- Target estimate
- Current level
After setup, Claude coaching activates automatically on every prompt.
Commands
On Codex, use $language-coach ....
On Cursor, use /language-coach ....
On Claude Code, use /language-coach:language-coach ....
| Command | Description |
|---|
$language-coach setup | One-time interactive setup wizard in Codex |
/language-coach ... | Command surface for Cursor |
/language-coach native <lang> | Change your native language |
/language-coach target <lang> | Single-target mode: set the language you are learning. Multi-target mode: promote an existing profile to primary (or warn + suggest target-add if the language isn't configured yet) |
/language-coach style <mode> | Switch coaching style: teaching, concise, translate |
/language-coach response <mode> | Switch response language: native or target |
/language-coach goal <mode> | Switch learning goal: everyday or scored |
/language-coach mode <mode> | Switch coaching mode: everyday, scored-writing, scored-speaking, or review |
/language-coach practice-focus <mode> | Set scoring focus: writing, speaking, or both |
/language-coach focus <mode> | Legacy alias for practice-focus |
/language-coach estimate <value> | Store your target estimate |
/language-coach band <score> | Legacy alias for estimate |
/language-coach level <text> | Store your current level |
/language-coach status | Show current config |
/language-coach off | Pause coaching (config preserved) |
/language-coach on | Resume coaching |
/language-coach progress | Show estimate history for all languages |
/language-coach progress <lang> | Show estimate history for a specific language |
/language-coach vocab on | Enable vocab focus tracking |
/language-coach vocab off | Disable vocab focus tracking |
/language-coach vocab [<lang>] | Show active vocab entries (all languages or one) |
/language-coach track-vocab | Manually add a vocab entry |
/language-coach mark-vocab-mastered | Mark a vocab entry as mastered |
Modes
| Mode | What you get |
|---|
everyday | Compact coaching with Your original, Corrected, More natural, and 1 key takeaway |
scored-writing | Score-oriented writing feedback using the target language's best-fit scale, with estimate, problems, rewrite, reusable pattern, and drill |
scored-speaking | Score-oriented spoken-naturalness feedback from text with fluency, lexical, grammar, pattern, and drill guidance |
review | Compact review summary of recurring mistakes, reusable patterns, and the next drill |
Progress tracking
Estimates are automatically recorded to the shared progress file (~/.prompt-language-coach/language-progress.json) and mirrored to the legacy platform-specific files whenever:
- The active mode is
scored-writing or scored-speaking
- The user wrote in a target language (not purely in the native language)
- Claude gives a scale estimate in the coaching box
Progress is stored permanently and never deleted. Use /language-coach:language-coach progress to see your history:
English progress (last 5 sessions):
2026-04-13 5.5
2026-04-14 5.5
2026-04-15 6.0
Current estimate: 6.0
If you also use Claude Status Bar, the current estimate and trend appear automatically in the status bar (📚 EN:6.0↑), and the pet reacts to your coaching activity.
Coaching styles
| Style | What it changes |
|---|
teaching | Explanatory coaching with reasons and upgrade guidance |
concise | Shorter correction-focused coaching |
translate | Target-language-first coaching with minimal explanation |
Configuration
Config is stored in the shared config file and mirrored to platform-specific paths:
- Shared:
~/.prompt-language-coach/language-coach.json
- Codex mirror:
~/.codex/language-coach.json
- Claude Code mirror:
~/.claude/language-coach.json
- Cursor mirror:
~/.cursor/language-coach.json
The normalized JSON schema:
{
"nativeLanguage": "Chinese",
"targetLanguage": "English",
"goal": "scored",
"mode": "scored-writing",
"style": "teaching",
"responseLanguage": "target",
"enabled": true,
"scoringFocus": "writing",
"targetEstimate": "7.0",
"currentLevel": "6.0",
"version": 1
}
| Field | Values | Default | Description |
|---|
nativeLanguage | any language name | "Chinese" | Your native language |
targetLanguage | any language name | "English" | Language you are learning |
goal | everyday / scored | "everyday" | Top-level learning goal |