English · Español
An agent skill that turns your coding assistant into a learning tutor. TuTor plans work in small steps, explains every command, verifies your progress with read-only checks, and refuses to complete the assignment for you.
Use it when you want to learn by doing—homework, tutorials, walkthroughs, or any time you say “don’t do it for me.”
TuTor helps teachers and students use AI as a coach, not a cheat sheet. Today’s coding assistants often hand over finished answers and skip the thinking, debugging, and trial-and-error where real learning happens. This skill redirects that power toward learning by doing: the learner writes the code and runs the commands; the agent plans steps, explains tools, and verifies progress—without doing the work for them. The aim is deeper understanding in class, in study groups, and on personal projects—not faster copy-paste.
| Behavior | Detail |
|---|---|
| Step-by-step | Outlines a numbered plan up front; gives one action per turn (no full solution). |
| Verification | After you say you’re done, the agent checks with read-only tools (Read, ls, cat, git status, git diff, tests you ran). |
| Tool gate | The agent may inspect your work but must not create, edit, or run commands that build your deliverable for you. |
| Command teaching | Every shell command includes a breakdown: goal, pieces, and what success looks like. |
Optional deep dives live in references/:
references/example-flow.md— greenfield app walkthroughreferences/tool-gate.md— which shell commands are allowed
Repository: github.com/kevinnio/tutor
TuTor ships as SKILL.md plus references/. The frontmatter name must be tutor.
Use the Skills CLI (skills.sh) to install into your coding agents. It detects which tools you have and writes to the correct skill directories.
User-wide (all projects) — recommended for your first install:
npx skills add kevinnio/tutor -g -yThis project only (share with a class or team via git):
npx skills add kevinnio/tutor -yPick specific agents (skip the interactive agent list):
npx skills add kevinnio/tutor -g -a cursor -a claude-code -a opencode -y| Flag | Meaning |
|---|---|
-g, --global |
User-wide install (~/…/skills/) |
(no -g) |
Install into the current project only |
-a, --agent |
Target agent(s), e.g. cursor, claude-code, opencode, codex, windsurf |
-y, --yes |
Non-interactive |
Preview before installing: npx skills add kevinnio/tutor --list. Full agent list: vercel-labs/skills.
After installing, start a new agent session.
- Cursor — Ask to learn something (e.g. “Teach me to build a todo CLI—don’t write it for me”) or use
/tutorif available. Cursor Agent Skills. - Claude Code — Run
/tutoror describe a learning goal. Claude Code skills. - OpenCode — Describe a learning goal; OpenCode loads skills on demand. OpenCode Agent Skills.
If you prefer not to use the CLI, clone the repo into a skill folder. Paths vary by agent; common examples:
| Agent | User-wide | This project |
|---|---|---|
| Cursor | ~/.cursor/skills/tutor |
.cursor/skills/tutor or .agents/skills/tutor |
| Claude Code | ~/.claude/skills/tutor |
.claude/skills/tutor |
| OpenCode | ~/.config/opencode/skills/tutor |
.opencode/skills/tutor |
REPO=https://github.com/kevinnio/tutor.git
TARGET=~/.cursor/skills/tutor # user-wide example
mkdir -p "$(dirname "$TARGET")"
git clone "$REPO" "$TARGET"Do not install under ~/.cursor/skills-cursor/ (reserved by Cursor). If TARGET already exists, remove it or use Upgrade instead of cloning again.
SKILL_ROOT="$HOME/code/tutor"
TARGET="$HOME/.cursor/skills/tutor"
mkdir -p "$TARGET"
ln -sf "$SKILL_ROOT/SKILL.md" "$TARGET/SKILL.md"
ln -sf "$SKILL_ROOT/references" "$TARGET/references"As a fun exercise, have TuTor install itself with you—you run every command; it coaches and checks your work. You’ll learn how skills are installed on disk, and once it’s set up you can always ask TuTor for help on real tasks.
Paste this into a coding agent that can read URLs (new chat).
Trust note: this prompt asks your agent to fetch instructions from the internet (raw.githubusercontent.com), pinned to release tag v0.6 (immutable). Only run it from a source you trust — a skill you install can influence what your agent does in future sessions. Prefer the manual install steps above if you don't want remote instructions fetched.
TuTor, install yourself with me—I run every command; you tutor.
Read and follow for this entire session:
- SKILL.md: https://raw.githubusercontent.com/kevinnio/tutor/v0.6/SKILL.md
- README Install section: https://raw.githubusercontent.com/kevinnio/tutor/v0.6/README.md
Follow TuTor’s rules: one step at a time, command breakdowns, verify after I say "done".
Never install for me (no writing skill files, no git clone, no npx on my behalf)—refuse "just do it."
First, ask me which coding agent I use (e.g. Cursor, Claude Code, OpenCode, Codex, Windsurf)
and whether I want a user-wide install or project-local. Use the correct skills path for that agent.
Goal: `tutor` skill installed on my machine.
Teach `npx skills add kevinnio/tutor -g -y` unless I want manual git clone.
After I answer, give a short numbered plan for my agent and scope, then Step 1 and stop.
npx skills update tutor -g -y # user-wide
npx skills update tutor -y # this project onlyList installed copies: npx skills list | grep tutor
cd ~/.cursor/skills/tutor # your install path
git pull origin masterFor a git submodule: git submodule update --remote path/to/tutor
Release tags are immutable. To install an exact audited version instead of master:
# fresh clone
git clone --branch v0.6 https://github.com/kevinnio/tutor.git "$TARGET"
# or, inside an existing clone
git fetch --tags && git checkout v0.6Verify the pinned version: git describe --tags
grep '^ version:' ~/.cursor/skills/tutor/SKILL.md
# path varies — use npx skills list to find installsCompare with metadata.version in SKILL.md on GitHub.
- Restart or start a new agent session so the agent reloads the skill.
- Confirm the version with the
grepcommand above. - If behavior is unchanged, run
npx skills listand update every scope (user-wide vs project) wheretutoris installed.
- Install the skill (see above) and open your project in the agent.
- Say what you want to learn, and that the agent should tutor—not implement—for you.
Example prompts:
I want to learn how to add tests to this repo. Walk me through it step by step; don't edit files for me.
Enséñame a crear un API REST con Express. No hagas el código por mí.
Help me fix this failing test, but only give hints and commands—I run everything myself.
- Do each step the tutor assigns, then reply when done (e.g. “done”, “listo”).
- The tutor verifies before moving on. If something is wrong, it tells you what’s missing—no skipping ahead.
- If the agent tries to do your work, remind it: “Follow the tutor skill—verify only, I run the commands.”
tutor/
├── SKILL.md # Main skill (required)
├── references/ # Optional deep reference for the agent
│ ├── example-flow.md
│ └── tool-gate.md
├── README.md
├── README-es.md
├── AGENTS.md # Instructions for agents editing this repo
├── AUTHORS.md # Contributors (names and GitHub handles)
└── LICENSE # MIT
Version is declared in SKILL.md frontmatter (metadata.version, currently 0.6). Releases are tagged v<version> (e.g. v0.6); pin to a tag for a reproducible install.
We welcome feedback and collaboration.
- Bug reports and feature requests — open a GitHub issue. Describe what you expected, what happened, and which agent you use.
- Code and docs — send a pull request. Great fits: clearer teaching patterns, tool-gate edge cases, README translations, and install notes for new agents.
- Fork the repository and create a branch (
git checkout -b fix/tool-gate-example). - Change
SKILL.mdand/or files underreferences/. Keep the skill focused; avoid bloating the main file—put long examples inreferences/. - Test by installing your branch into one agent (Cursor, Claude Code, or OpenCode) and running through a short learning task.
- Open a pull request with:
- What behavior changed and why
- Which agent(s) you tested
- Any breaking change to install paths or skill name (
tutormust match the folder name for OpenCode)
Please do not commit secrets, personal paths, or generated node_modules / playground artifacts.
Avatars are generated from GitHub contributors via contrib.rocks (contributors-img). Names and handles: AUTHORS.md.
If TuTor helps you learn, you can buy me a coffee via PayPal:
Donations are optional and not required to use or contribute to this project.
MIT — Copyright (c) 2026 Kevin Perez