You are the language-coach command handler. Read the sub-command and run the matching bundled CLI command.
Default platform: use the current host platform.
- In Codex, use
--platform codex - In Claude Code, use
--platform claude - In Cursor, use
--platform cursor
If the host platform is ambiguous, ask which platform the user is currently running before writing config.
Resolve the script path relative to this skill directory:
- Skill path:
skills/language-coach/SKILL.md - Bundled CLI path:
../../scripts/manage_language_coach.py
All commands below should call that bundled script path directly:
python3 ../../scripts/manage_language_coach.py --platform <claude|codex|cursor> ...
Setup
Ask these questions one at a time:
What is your native language? (for example: Chinese, Japanese, Spanish)What language are you learning? (for example: English, French, German)What is your main goal? (everyday / scored)Which coaching style do you want? (teaching / concise / translate)Which response language should I use after coaching? (native / target)
If the user chooses scored, ask these follow-ups one at a time:
Which scored mode do you want? (scored-writing / scored-speaking)What scoring focus should I store? (writing / speaking / both)What target estimate are you aiming for? (optional)What is your current level? (optional)
Then run the matching commands in order:
python3 ../../scripts/manage_language_coach.py --platform <platform> native "<native>"
python3 ../../scripts/manage_language_coach.py --platform <platform> target "<target>"
python3 ../../scripts/manage_language_coach.py --platform <platform> goal "<goal>"
python3 ../../scripts/manage_language_coach.py --platform <platform> style "<style>"
python3 ../../scripts/manage_language_coach.py --platform <platform> response "<response>"
For Codex users, set <platform> to codex on every command in the setup flow.
For Cursor users, set <platform> to cursor on every command in the setup flow.
Do not imply that the default shared setup writes Codex or Cursor config unless you are explicitly running that platform variant.
If goal is scored, also run:
python3 ../../scripts/manage_language_coach.py --platform <platform> mode "<scored-mode>"
python3 ../../scripts/manage_language_coach.py --platform <platform> focus "<focus>"
python3 ../../scripts/manage_language_coach.py --platform <platform> estimate "<target-estimate>"
python3 ../../scripts/manage_language_coach.py --platform <platform> level "<current-level>"
Finish by running:
python3 ../../scripts/manage_language_coach.py --platform <platform> status
For Codex users, also run:
python3 ../../scripts/manage_language_coach.py --platform codex install-hook
python3 ../../scripts/manage_language_coach.py --platform codex status
For Cursor users, also run:
python3 ../../scripts/manage_language_coach.py --platform cursor install-hook
python3 ../../scripts/manage_language_coach.py --platform cursor status
The Cursor install-hook writes to ~/.cursor/hooks.json (the top-level location). Plugin-manifest hooks are unreliable on some Cursor releases, so the top-level entry is what actually fires.
This ensures automatic coaching is installed immediately after setup.
Confirm with a short summary of the stored configuration.
Sub-commands
native <lang>
Run:
python3 ../../scripts/manage_language_coach.py --platform <platform> native "<lang>"
Confirm: Native language updated to: <lang>
target <lang>
Run:
python3 ../../scripts/manage_language_coach.py --platform <platform> target "<lang>"
Behavior depends on whether multi-target profiles are configured:
- Single target (targets[] empty): sets the language the coach practices.
Confirm:
Target language updated to: <lang>. - Multi-target mode (targets[] non-empty):
- If
<lang>matches an existing profile, that profile becomes primary. - If
<lang>is not intargets[], only the fallback language updates; coaching still uses the existing profiles. Usetarget-add <lang>to actually coach a new language.
- If
Multi-target management
Use these commands to manage the targets list for auto-detected coaching across multiple target languages:
target-add <lang>
Run:
python3 ../../scripts/manage_language_coach.py --platform <platform> target-add "<lang>"
This appends a new target profile using the current shared coaching settings as defaults.
target-remove <lang>
Run:
python3 ../../scripts/manage_language_coach.py --platform <platform> target-remove "<lang>"
This removes the matching target profile from the multi-target list.
target-list
Run:
python3 ../../scripts/manage_language_coach.py --platform <platform> target-list
Relay the printed target language list back to the user.
style <mode>
Valid values: teaching, concise, translate
Run:
python3 ../../scripts/manage_language_coach.py --platform <platform> style "<mode>"
Confirm: Style updated to: <mode>
response <mode>
Valid values: native, target
Run:
python3 ../../scripts/manage_language_coach.py --platform <platform> response "<mode>"
Confirm: Responses will use: <mode>
goal <mode>
Valid values: everyday, scored
Run:
python3 ../../scripts/manage_language_coach.py --platform <platform> goal "<mode>"
Notes:
goal everydayresets the active mode toeverydaygoal scoredkeeps the shared config in scored mode
mode <mode>
Valid values: everyday, scored-writing, scored-speaking, review
Run:
python3 ../../scripts/manage_language_coach.py --platform <platform> mode "<mode>"
Notes:
- scored modes automatically set
goaltoscored mode everydayswitchesgoalback toeveryday
practice-focus <mode>
Valid values: writing, speaking, both
Run:
python3 ../../scripts/manage_language_coach.py --platform <platform> practice-focus "<mode>"
focus remains available as a legacy alias.
estimate <value>
Examples: 6.5, N3, B1
Run:
python3 ../../scripts/manage_language_coach.py --platform <platform> estimate "<value>"
level <text>
Examples: B1, band 5.5, upper-intermediate
Run:
python3 ../../scripts/manage_language_coach.py --platform <platform> level "<text>"
status
Run:
python3 ../../scripts/manage_language_coach.py --platform <platform> status
Relay the formatted output back to the user.
install-hook
Codex or Cursor. Run:
python3 ../../scripts/manage_language_coach.py --platform codex install-hook
# or
python3 ../../scripts/manage_language_coach.py --platform cursor install-hook
Confirm: Codex hook installed: <path> or Cursor hook installed: <path>
remove-hook
Codex or Cursor. Run:
python3 ../../scripts/manage_language_coach.py --platform codex remove-hook
# or
python3 ../../scripts/manage_language_coach.py --platform cursor remove-hook
Confirm: Codex hook removed: <path> or Cursor hook removed: <path>
hook-status
Codex or Cursor. Run:
python3 ../../scripts/manage_language_coach.py --platform codex hook-status
# or
python3 ../../scripts/manage_language_coach.py --platform cursor hook-status
Relay installed or not installed back to the user.
progress [language]
Show raw estimate history for all languages (or a single language).
Run:
python3 ../../scripts/manage_language_coach.py --platform <platform> progress
# or for a specific language:
python3 ../../scripts/manage_language_coach.py --platform <platform> progress "<language>"
Relay the output back to the user. For full statistics (velocity, streak, projection), suggest /language-coach:language-review instead.