By seilk
Async English coach for Claude Code. Critiques English prompts inline with a diff UI; translates non-English prompts (Korean, Japanese, etc.) to natural English. Zero perceived latency via fire-and-forget worker + defer-bash retrieval.
Disable the engco auto English coach. Creates a ~/.claude/state/engco.off marker; manual /engco still works.
Re-enable the engco auto English coach. Removes the ~/.claude/state/engco.off marker file.
Display the latest engco critique from ~/.claude/state/engco-last.md.
Run the English coach manually on text or the previous prompt. Critiques English; translates non-English to natural English.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
An async English coach that lives inside Claude Code.
Critiques every prompt with an inline diff. Translates non-English prompts to natural English.
You write prompts to Claude in English to practice. engco watches every prompt, runs a Haiku call in parallel with Claude's response, and appends a coach footer at the end of the reply.
English in:
I sended this prompt to test the new sync mode and see if its faster
Footer out (rendered after Claude's actual answer):
- I sended this prompt to test the new sync mode and see if its faster
+ I sent this prompt to test the new sync mode and see if it's faster
Changes:
sended → sent (irregular past tense)its → it's (contraction)Why: "send" is irregular (send/sent/sent); "it's" = "it is" (not the possessive).
Korean (or any other language) in → translation mode:
- 이건 sync 모드 한국어 테스트야 잘 되는지 보자
+ This is a Korean language test for sync mode—let's see if it works.
A coach that interrupts your work fails the second time you use it. engco has to be invisible until you want it.
That means no spinner before Claude starts replying, no critique that lags one prompt behind what you just typed, and no separate panel or notification to check. The hook fires off a background worker (~1.2s API call) and tells the assistant: after answering the user, run this Bash command to fetch the result and paste it. Streaming the answer takes long enough that the worker is already done by the time the assistant calls Bash. The retrieval is instant. The coach footer appears at the end of the same response, matching the prompt that was just typed.
See INSTALL.md. Two paths:
/plugin install engco@<marketplace>git clone … && bash install.shRequires ANTHROPIC_AUTH_TOKEN or ANTHROPIC_API_KEY in env or ~/.claude/settings.json.
| Command | Effect |
|---|---|
/engco <text> | Manual coach on the given text. Works on any input. |
/engco-on | Enable the auto coach (default state). |
/engco-off | Silence the auto coach. Manual /engco still works. |
/engco-show | Pull the latest auto-coach result into chat. |
Plugin install namespaces these as /engco:engco, /engco:engco-on, etc.
[user prompt]
│
├─→ main agent ─▶ streams answer ─▶ runs Bash retrieval ─▶ pastes diff footer
│
└─→ engco_suggest.py (UserPromptSubmit, ~50ms)
│
└─→ engco_worker.py (detached, urllib API call ~1.2s)
│
└─→ writes ~/.claude/state/engco-last.md + pending.flag
The Bash one-liner the assistant runs at the end:
for i in $(seq 1 50); do [ -f ~/.claude/state/engco-pending.flag ] && break; sleep 0.1; done
[ -f ~/.claude/state/engco-pending.flag ] && \
cat ~/.claude/state/engco-last.md && \
rm -f ~/.claude/state/engco-pending.flag
If the response finishes before the worker (rare), the loop polls for up to 5s. If the worker fails entirely (network error, no credentials), the footer is silently dropped. The user's main flow never breaks.
| Variable | Where | Default |
|---|---|---|
ANTHROPIC_AUTH_TOKEN | env or settings.json env block | required (or ANTHROPIC_API_KEY) |
ANTHROPIC_API_KEY | env or settings.json env block | required (or ANTHROPIC_AUTH_TOKEN) |
ANTHROPIC_BASE_URL | env or settings.json env block | https://api.anthropic.com |
MIN_WORDS | top of hooks/engco_suggest.py | 6 |
MIN_CHARS | top of hooks/engco_suggest.py | 20 |
MAX_PENDING_AGE_SEC | top of hooks/engco_suggest.py | 600 (10 min) |
MODEL | top of hooks/engco_worker.py | claude-haiku-4-5-20251001 |
The hook silently skips on:
/ (slash commands)[noeng] (manual opt-out marker)MIN_WORDS=6 words AND MIN_CHARS=20 characters/engco-off (creates ~/.claude/state/engco.off)| File | Purpose |
|---|---|
~/.claude/state/engco-last.md | Most recent worker output. Read by /engco-show. |
~/.claude/state/engco-log.md | Append-only history of every critique. |
~/.claude/state/engco-pending.flag | Empty marker. Set by worker, consumed by retrieval. |
~/.claude/state/engco.off | Toggle marker. Created by /engco-off, removed by /engco-on. |
The system prompt that drives the coach lives at the top of hooks/engco_worker.py. Two modes:
npx claudepluginhub seilk/engcoBeam your Claude Code setup across machines — sync plugins, skills, agents, rules, hooks, and settings
Instant on-the-fly harness assembler. Discovers available skills, agents, and commands across Claude Code, Hermes, and OpenClaw — pops them together to execute any task.
Multi-model consensus engine integrating OpenAI Codex CLI, Gemini CLI, and Claude CLI for collaborative code review and problem-solving.
Ultra-compressed communication mode. Cuts ~75% of tokens while keeping full technical accuracy by speaking like a caveman.
Comprehensive UI/UX design plugin for mobile (iOS, Android, React Native) and web applications with design systems, accessibility, and modern patterns
Memory compression system for Claude Code - persist context across sessions
Standalone image generation plugin using Nano Banana MCP server. Generates and edits images, icons, diagrams, patterns, and visual assets via Gemini image models. No Gemini CLI dependency required.
Write feature specs, plan roadmaps, and synthesize user research faster. Keep stakeholders updated and stay ahead of the competitive landscape.