| name | learn-coach |
| description | Interactive coach for `python trainer.py learn`. Asks a few questions about your stack and the words your voice model mis-hears, seeds the miner, reviews risky suggestions before writing, and runs an independent agent to brainstorm improvements. Use when building or refreshing a SuperWhisper config from your own dictation history. |
learn-coach
A guided wrapper around python trainer.py learn. It turns a raw history-mining
run into a short coached session: a few questions steer the miner toward your
stack, you review anything risky before it's written, and an independent agent
proposes improvements each run.
[!NOTE]
This skill is optional and Claude-Code-specific. The underlying command
works without it: python trainer.py learn --hints <file> does the same mining.
The skill just collects the hints for you and adds the review + brainstorm
steps. Step 5 (brainstorm) needs an agent-capable runtime and is opt-in.
Step 1 — Ask the feeder questions (offer Skip)
Ask the operator the questions below. Make Skip a first-class option — say
explicitly: "Reply skip to run with defaults and no questions." If they skip
(or don't answer), jump straight to Step 3 and run with no hints.
- Systems — tools, languages, frameworks, products you dictate about. Seeds
known-term matching (e.g.
Cube, dbt, WP Fusion).
- Mis-hears — words the voice model reliably gets wrong, as
heard → meant
(e.g. cloud code → Claude Code, active campaign → ActiveCampaign).
- Leave alone — look-alike words it should NOT "correct". (You really do say
"cloud code" about infrastructure.) These become the
suppress list and stop
false fixes before they happen.
- Pointers — client / product / proper names worth forcing into vocabulary.
Step 2 — Write the hints file
From the answers, write user_configs/learn_hints.yaml (git-ignored). Omit any
empty key. Full schema: data/learn_hints.example.yaml.
systems: [Cube, dbt, WP Fusion]
misspellings:
- from: "cloud code"
to: "Claude Code"
vocabulary: [Acme Corp]
suppress: [cloud code]
Step 3 — Run learn
python trainer.py learn --hints user_configs/learn_hints.yaml
python trainer.py learn
Add --source <path> to mine an aggregated cross-device folder
(see docs/IMPORTING_HISTORY.md).
Step 4 — Review false positives
Open the generated user_configs/from_history.yaml and flag any risky
replacement for the operator:
- a common English word on the
from side (could rewrite ordinary speech)
- any
from → to pair the operator might not actually want
Show the flagged rules; let the operator drop any. Apply their choices by editing
the file, or by adding the rule's from to suppress and re-running Step 3.
Leave the safe rules (case-fixes, multi-word names) in place.
Step 5 — Independent improvement brainstorm (opt-in)
Spawn ONE sub-agent with no context from this conversation to propose miner
improvements independently, so each run gets a fresh outside view.
- SWARM CONFIG: count=1 model=opus effort=high est_cost_tier=high — independent
design synthesis. Skip if the operator declines or no agent runtime is available.
- If a local deep-planning command (e.g.
/deep-plan) is available you may use
it; otherwise dispatch a plain Opus agent. Do not hard-depend on any one command.
- Feed it the newest file in
user_configs/brainstorms/ (if any) as
"already proposed — return ONLY net-new ideas," so runs converge instead of
repeating.
- Brief it on: the miner's approach (corpus mining + known-terms fuzzy matching +
hints), the
meta.json fields available (result, rawResult, segments,
modeName, modelName, datetime, duration), and ask for concrete,
stdlib-preferred precision/recall improvements ranked by value/effort, each with
its false-positive risk.
- Save the output to
user_configs/brainstorms/<YYYY-MM-DD-HHMM>.md (git-ignored)
and summarize the top 2–3 net-new ideas for the operator.
Step 6 — Apply (optional)
If the operator approves the reviewed config:
python trainer.py train --config user_configs/from_history.yaml
Quit SuperWhisper first so it can't overwrite the write from memory; a timestamped
backup is created automatically, and train skips rules already in your settings.