A programming mentor that refuses to just give you the answer, on purpose. The point isn't the code getting written; it's you actually learning something that survives past this one bug fix. What sticks gets logged to a Learning Log too, so you can quiz yourself on it later.
coach is an AI-agent skill built on the open SKILL.md standard: one file, works with any tool that reads that format (Claude Code, OpenAI Codex, OpenClaw, and others). Drop it in your tool's own skills directory. Pick how much rope you get, and it holds you to it: won't hand you code in hardcore, won't touch your files in standard, won't write your logic in architect. Want the AI to just build it? pair does, no mentoring gate, still quietly tracking anything worth remembering.
Here's hardcore in action:
you: /coach hard
coach: Hardcore engaged. Zero code from me, all the bugs are yours.
you: my login handler throws "undefined is not a function" on the
retry. fix: this.state.user = null before it retries.
coach: Nope, not touching that. Paste the 3-5 lines you think are
breaking and walk me through what each one does. What's
`this` bound to on that second call?
| Mode | Alias | What the AI does | What you do |
|---|---|---|---|
hardcore |
hard |
Zero mercy, zero code. Only questions. | Everything: find the bug, explain it, fix it, prove it works. |
standard |
std |
Hints and pseudo-code. Menus of tradeoffs. | Write and land the real solution yourself. |
architect |
arch |
Builds the skeleton, leaves the guts as // TODO: User Implementation. |
Fill in the actual logic. |
pair |
(none, already short) | Writes the real, complete solution. No gate, no scaffolding limit. Logs a note only if something actually stuck. | Review it, same as any coding partner's work. |
Stuck mid-lecture on something genuinely trivial? Say "just fix this one." Any mode will do that single item directly, then snap back to its normal rules on the next thing. It's an escape hatch, not a mode switch.
Copy skills/coach/SKILL.md into your tool's own skills directory:
- Claude Code:
.claude/skills/coach/SKILL.md(project) or~/.claude/skills/coach/SKILL.md(personal) - OpenAI Codex:
.codex/skills/coach/SKILL.md - OpenClaw:
.openclaw/skills/coach/SKILL.md - Any other tool that reads the
SKILL.mdstandard: same idea, its own directory
/coach hardcore (or: /coach hard)
/coach standard (or: /coach std)
/coach architect (or: /coach arch)
/coach pair
Add a tone as a second word. Changes how it talks, never what it's allowed to do:
/coach hardcore dictator # blunt, zero coddling
/coach standard fun # playful, light jokes
No mode given? It checks for a saved default (a coach.md in your tool's own project-config directory, then a coach-preference.md in its global one, e.g. .claude/coach.md and ~/.claude/coach-preference.md for Claude Code). If neither exists, it defaults straight to standard: no need to ask, since standard never touches your files. It'll offer to remember whichever mode you actually end up using.
Mid-session, no need to re-invoke /coach either. Just say "switch to standard," "let's do architect for this part," or "let's just pair on this."
Had enough mentoring for one session?
/coach stop
/coach disable
or just say "stop coaching." Drops every rule until you invoke /coach again.
Want to check what actually stuck?
/coach study
Reads back through your own Learning Log and quizzes you on it: recall test, not a recap. Read-only, same as hardcore/standard.
Whenever a mode's logging rule fires, it appends a short, codebase-agnostic note to a global location: ~/.claude/learning/<subject>.md for Claude Code, the equivalent home-config directory for other tools (python.md, cpp.md, ros.md, whatever fits). Global on purpose: the point is knowledge that survives the repo, the job, the employer, not a log that fragments into a separate copy per project. hardcore/standard/architect log on a fixed trigger; pair logs only when something actually comes up, no forced entry just because a session happened. See learning/example.md in this repo for the entry format /coach study expects.
Autocomplete is great at making you faster. It's less great at making you better: it's easy to ship code you never actually understood. Coach is the opposite trade. Slower in the moment, in exchange for the model actually sticking.
Real talk: I got tired of vibe coding. Hitting a green checkmark and calling it understanding.
So: a mentor that makes the AI hold the line on purpose, so I still have to do the part that actually sticks. Mildly annoying by design. That's the whole point.
caveman: a Claude Code plugin that makes responses terse without losing technical substance. Good pairing if you want your mentor blunt and brief.