@dluck/opencode-learn-englishNon-intrusive opencode plugin that helps Chinese-speaking developers improve English while coding
0
20
1 in 7 days
22.4
Multi-signal model
3 months ago
2026-05-02
Install and configure
opencode.jsonWrites to this project's opencode.json — applies to this repository only.
opencode.json
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["@dluck/opencode-learn-english@0.1.2"]
}Writes to ~/.config/opencode/opencode.json — applies to every project.
~/.config/opencode/opencode.json
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["@dluck/opencode-learn-english@0.1.2"]
}If you want to modify the plugin locally, install it into the project and reference the local path.
shell
pnpm add -D @dluck/opencode-learn-englishopencode loads npm dependencies through its embedded runtime on startup and caches them locally — no manual global install needed.
A non-intrusive opencode plugin that helps Chinese-speaking developers improve their English while coding. The plugin injects an English tutor instruction into the system prompt, so the main LLM appends a short tips block at the end of its own replies — no background analysis, no separate API calls, no toast queue.
How It Works
The plugin hooks into experimental.chat.system.transform and appends a structured "English Learning Tips" instruction to the system prompt. During real user turns (not title generation or compaction), the LLM is asked to:
- Input Correction — If the user wrote in English with grammar errors or unidiomatic phrasing, show a
Prompt:section with the verbatim awkward phrase → a natural rewrite. - Vocabulary / Phrase Tips — Surface 2–3 notable English expressions from the AI's own reply with plain-English definitions.
Both features are veto-powered: if there's nothing worth teaching, the LLM omits the block entirely. The tips block is always in English, regardless of the conversation language.
Install
Add the plugin to your opencode.json:
{
"plugin": ["@dluck/opencode-learn-english"]
}
Or install locally for development:
{
"plugin": ["file:///abs/path/to/opencode-learn-english-plugin"]
}
Note: The
publishConfig.accessis set to"public"so the scoped package can be installed without a paid npm account.
Configuration
Optional plugin-specific config under experimental.english_learn:
{
"experimental": {
"english_learn": {
"enabled": true
}
}
}
| Key | Default | Description |
|---|---|---|
enabled |
true |
Master switch for the entire plugin |
Design Principles
- Non-intrusive: Never modifies conversation history, prompt parts, or LLM behavior beyond the system-prompt injection
- Veto-powered: The LLM explicitly returns nothing when there's nothing worth teaching
- Zero infrastructure: No background model calls, no separate credentials, no toast queue — the main LLM does all the work
- Error-safe: All plugin errors route to OS notifications, never to opencode toasts; hook handlers catch all exceptions
Requirements
- opencode with plugin support
- Bun runtime
Development
bun install # install dependencies
bun run build # compile to dist/
bun test # run tests