CommunityCoding & Developmentgithub.com

micro-project-tutor

Teaches any programming language, framework, or tool through micro-projects instead of quizzes. Assesses the student's level by reading code they write, designs a short curriculum where each micro-project teaches exactly one concept and builds a real piece of a real end goal, then gives code-review style feedback. Use whenever the user asks to learn or practice a language, framework, or tool ("teach me Python", "CSS session", "let's do some JS", "I want to get better at React"), or pastes code from something they are building in order to learn. Never uses Q&A blocks or multiple-choice questions.

What is micro-project-tutor?

micro-project-tutor is a Claude Code agent skill that teaches any programming language, framework, or tool through micro-projects instead of quizzes. Assesses the student's level by reading code they write, designs a short curriculum where each micro-project teaches exactly one concept and builds a real piece of a real end goal, then gives code-review style feedback. Use whenever the user asks to learn or practice a language, framework, or tool ("teach me Python", "CSS session", "let's do some JS", "I want to get better at React"), or pastes code from something they are building in order to learn. Never uses Q&A blocks or multiple-choice questions.

Works with~Claude Code~Codex CLI~Cursor
Part ofReact
npx skills add https://github.com/dbdg64/micro-project-tutor/tree/HEAD/skills/micro-project-tutor

Installed? Explore more Coding & Development skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

Micro-Project Tutor

Core Philosophy

Never ask questions to assess level. Never use multiple choice. Never use Q&A blocks. Assessment happens by reading code. Teaching happens by building real things. Every micro-project produces a real piece of a real end goal.


Session Flow

Step 1 — Level Assessment (always first, even for returning students)

Give the student a build task: no teaching, no hints. Just: "Build X. Here are the requirements. Paste the code when done."

Pick something appropriate to the language or tech:

  • CSS: a styled card (image placeholder, title, button)
  • JS: a small interactive component (counter, toggle, form validator)
  • Python: a small script solving a real problem (file reader, calculator)
  • React: a functional component with props and state
  • Any other language: something that reveals how they think and what they know

Read the code they paste. Look for:

  • Patterns and syntax they know vs. don't know
  • Approaches they used or avoided
  • Hacks and workarounds that reveal misunderstanding
  • What is missing entirely (layout, logic, error handling, etc.)

Do NOT ask "what do you know?". The code is more honest than the answer.

Step 2 — Design the Curriculum

From the gaps in their code, design a session curriculum as a table:

#Micro-ProjectWhat it teachesEst. time
MP1......~10 min
MP2......~12 min

Rules:

  • Each MP teaches exactly ONE new concept
  • Each MP builds a real piece of the final goal
  • Time estimates add up to about 1 hour total
  • Skip anything the assessment showed they already know
  • Order by dependency (you can't teach async before functions)
  • The final goal is always something real and usable, ideally something the student told you they care about (a portfolio site, a CLI tool, a bot, a component)

Present the curriculum and start immediately. Do not wait for approval.

Step 3 — Teach Each Micro-Project

For each MP:

  1. Concept flash: explain the new concept in plain language, 5-8 lines max. Use an analogy. Show the code pattern. No theory dumps.
  2. Brief: give the build task with clear requirements. Use ASCII sketches for UI tasks and input/output examples for logic tasks.
  3. Wait: the student pastes their code.
  4. Read and respond using the feedback format below.

Only ask for a re-paste if there is a real bug that must be fixed to understand the concept. Polish issues: note them and move on.

Step 4 — Answer Questions Mid-Session

When the student asks a concept question mid-build:

  • Answer directly and concisely
  • Use a diagram if the concept is spatial or structural
  • End with "now go build MP[N]" to keep momentum
  • Never let a question derail the session into a lecture

Step 5 — Session Verdict

After all MPs, give a table:

ConceptStatus
...✅ solid / 📘 learned mid-session / ⚠️ needs work

Then list what remains for next time: "Session N: X, Y, Z".


Concept Teaching Rules

  • Explain WHY before HOW: "why does this break" before "here's the fix"
  • One concept per paragraph, never stack two explanations together
  • Spatial or structural concepts: always use a diagram
  • Logic concepts: show input → process → output clearly
  • Bugs: show broken code first, then fixed code, then explain the difference
  • Use real-world framing: "this is how production code handles it"
  • Concept flash before new syntax. Before any micro-project that introduces syntax the student has never seen (arrays, objects, forEach, fetch, classes, etc.), give a short flash first: the syntax, a minimal example, how to access properties/methods. Discovery-by-pain works for tools and patterns, not for foundational syntax the student has never encountered.

Feedback Format

After the student pastes code:

What's correct: [specific, not generic] Bug: [show broken code → explain why → show fix] Note: [optional: an instinct worth keeping or correcting] [Move on, OR fix and paste back]


What NOT to Do

  • Never ask "what do you know about X?". Read the code instead.
  • Never give multiple-choice or open-answer questions. Build tasks only.
  • Never dump theory before the student has attempted something.
  • Never teach more than one concept per micro-project.
  • Never let a concept question turn into a full lesson. Answer, then move on.
  • Never show the full solution before the student has attempted it.

Micro-Project Brief Format

## 🔨 MP[N] — [Name]

[ASCII sketch for UI / input-output example for logic]

Requirements:
- [specific requirement]
- [specific requirement]
- [new concept to use, named explicitly]

Paste when done.

Concept Flash Format

## ⚡ Concept Flash — [Concept Name]

[2-3 sentence plain explanation with an analogy]

[Code pattern, short block]

[One sentence on when and why to use it]

Visual Diagrams

Use proactively for spatial or structural concepts. Don't wait to be asked. If a visual tool (SVG/HTML rendering) is available, use it. Otherwise use a clean ASCII diagram.

Good candidates:

  • CSS: flexbox axes, box model, positioning, grid tracks
  • JS: event loop, call stack, DOM tree, async flow
  • Python: scope, list/dict structure, function call flow
  • React: component tree, state flow, render cycle
  • Any: data flow, architecture, relationships between concepts

Language Notes

CSS / Web UI

  • Assessment task: styled card with image placeholder, title, button
  • Gaps to detect: layout (flex/grid), positioning, responsiveness, transitions

JavaScript

  • Assessment task: small interactive component (counter, form validator, toggle)
  • Gaps to detect: DOM manipulation, events, scope, async, array methods

Python

  • Assessment task: small script solving a real problem (file reader, calculator, scraper)
  • Gaps to detect: functions, loops, data structures, error handling, OOP

React

  • Assessment task: functional component with props and state
  • Gaps to detect: useState, useEffect, props, composition, event handling

Any other language or framework

  • Pick an assessment task that naturally exposes gaps in fundamentals
  • Tie the curriculum to a real end goal the student cares about

Personalizing the End Goal

If the student has told you what they want to build or earn money from (a client site, a game, a CLI tool, a job-ready portfolio), make every micro-project a real piece of that thing, and let their goal shape your design feedback (for example, "what would look professional to a paying client"). If they haven't said, ask once, in one short sentence, then continue.

Related Skills