Screenshot a stuck student's App Lab code, paste it into your Claude chat, and coach them to find the bug themselves. Pick the situation below β the page gives you the right move and the exact prompt to send Claude.
πTwo ways to use this:Analyze Screenshot reads a student's code right here (needs a one-time Anthropic API key). The other tabs are the no-setup playbook β the escalation ladder, question bank, and skill tracker you use while walking the room, plus copy-ready prompts if you'd rather coach in your own Claude chat.
Analyze a screenshot right here
πOne-time setup: paste your Anthropic API key below. It's saved only in this browser and sent straight to Anthropic β never to me or any server. Get a key at console.anthropic.com; each analysis costs a few cents. Don't do this on a shared computer.
πΈ Click to choose a screenshot β or copy one (Win+Shift+S) and paste it here (Ctrl/β+V)
Coaching
The feedback Claude gives you
πWhat I seeA neutral read β no blame, no answer.
βAsk the student (in order)2β3 Socratic questions that walk them toward the bug.
πIf they're still stuckOne nudge toward the area β still not the fix.
π Debugging skill to name out loudThe transferable move they keep for next time.
Match the help to the student β escalation ladder
Give the least help that unsticks them. Move up a rung only if they're still stuck. Each rung has a prompt to send Claude.
Level 1 Β· NudgeUse when: capable, just needs a spark
Ask one question, then walk away.
Drop a single guiding question and give them space to think. Come back in 2 minutes.
"What did you expect that line to do β and what did it actually do?"
Prompt: one guiding question only.
Level 2 Β· HintUse when: engaged but circling
Point to the neighborhood.
Narrow where to look without naming the bug. Then let them search that area.
"Something in how the button and your code connect isn't matching up. Look there."
Prompt: point to the area + name the skill.
Level 3 Β· Peer / modelUse when: frustrated or social learner
Connect them to a peer, or model a parallel example.
Pair them with a student who just solved it, or think aloud through different code with the same bug so they transfer it.
"Let me show you a different program with the same kind of mix-up, then you spot yours."
Prompt: a parallel example to model.
Level 4 Β· Co-debugUse when: shutting down, or time is short
Debug it together β they keep their hands on the keyboard.
Walk the debugging process with them, one small step at a time. You ask, they type and test. Never take the keyboard.
"Okay, together. Step 1 β where do we think it breaks? Add a console.log right there. What prints?"
Prompt: step-by-step co-debug script.
The method to teach (say it every time)
π―
ExpectWhat should happen?
π
ObserveWhat actually happens?
π
LocateWhere could it break?
π¬
TestOne change / one log
π
RepeatCloser each time
Spot the bug half the room shares
When you see the same struggle over and over, stop chasing it one desk at a time β teach it once.
How
Screenshot 3β6 stuck students' code (or the same App Lab level from each).
Paste them into your Claude chat together.
Claude finds the common bug or misconception and gives you a 60-second mini-lesson + one whole-class question.
Pause the room, teach the pattern, send them back to fix their own.
Prompt: find the shared bug + whole-class mini-lesson.
Prompt: rank the top bugs to reteach first.
π‘After the mini-lesson, log the skill for each student in Skill Tracker so you can see next week whether it stuck.
App Lab bug β questions to ask
Button does nothing when clicked
"How does the program know to run code when that button is clicked?"
"Does the id in onEvent match the button's id in Design β exactly?"
"Is the onEvent on the right screen?"
Skill: trace the event β id β onEvent
Math is wrong / numbers sit side-by-side
"What does getText() return β number or text?"
"What does + do to two pieces of text?"
"Where could you wrap it in Number(...)?"
Skill: input is text β convert with Number()
Variable is wrong / undefined
"Where is it set vs used β which is first?"
"Put console.log(x) before the broken line. What prints?"
"Is it changing inside the function or only outside?"
Skill: trace a variable with console.log
Nothing runs / no response
"Is this function ever called? From where?"
"Red text in the debug console? Read the first line β what line #?"
"What's the very first thing you expect to happen?"
Skill: read the error first; check the call
Screen won't change
"What does setScreen() need inside the ( )?"
"Does that screen id match the real screen id?"
"Is the line that calls it actually running?"
Skill: ids must match; follow setScreen
Loop runs forever / freezes
"What makes this loop stop?"
"Does the condition ever become false?"
"What changes the counter inside the loop?"
Skill: every loop needs a way to end
if is always true / always false
"Is that = or ==? What's the difference?"
"What two values are compared there?"
"console.log both β the types you expect?"
Skill: == vs = ; inspect the values
Element is invisible / off-screen
"Which screen is it on β the one showing?"
"Are its x, y, width on the canvas?"
"Is something drawn on top of it?"
Skill: right screen + on-canvas
Drawing doesn't show (canvas)
"Is there a canvas on this screen?"
"Does your draw code run after the canvas exists?"
"Are the coordinates on the canvas β (0,0) is top-left?"
Skill: canvas first, then coordinates
Timer / animation not moving
"Is the timedLoop/setInterval actually started?"
"What does it call each tick β and does that update the screen?"
"Does anything ever stop it?"
Skill: a timer calls a function repeatedly
List / array issues
"What's the first index? What's the last valid one?"
"Is appendItem adding to the list you think?"
"What does list.length print right now?"
Skill: lists are 0-indexed; check length
Update doesn't show on screen
"Which id are you updating with setText/setProperty?"
"Is that the same id that's actually on the screen?"
"Does the update run after the value changes?"
Skill: update the id that's really there
Wrong event fires (or none)
"Which event do you want β click, change, or input?"
"A dropdown/text field changing uses which one?"
"Is the event type spelled exactly right?"
Skill: pick the right onEvent type
Can't read the input value
"How do you get what they typed/selected?"
"Is getText(id) using the input's id?"
"Is the value text β do you need a number?"
Skill: read input by id; mind the type
Sound / image won't play or show
"Is the asset actually in the Assets tab?"
"Does the filename in code match exactly?"
"Is the code that plays/shows it reached?"
Skill: asset name must match exactly
Function does the wrong thing
"Read the function name aloud β does it match what it does?"
"What goes in, what should come out?"
"console.log at the top and bottom β what changes?"
Skill: check inputs/outputs of the function
if compares text to a number
"Is getText giving you \"5\" (text) or 5 (number)?"
"Will \"5\" == 5 the way you expect?"
"Where could Number(...) go?"
Skill: compare the same types
Counter resets every time
"Where is the counter variable declared β inside the event or outside?"
"If it's re-made each click, what value does it start at?"
"Where should it live so it remembers?"
Skill: variable scope β declare once, outside
Event fires way too many times
"Is the onEvent inside a loop or another event?"
"How many times does that code run?"
"Should the handler be set once, at the start?"
Skill: attach each onEvent only once
Output goes to console, not the screen
"Does console.log show on the app, or in the debug console?"
"How do you put text on a screen element?"
"Which id should the text go to?"
Skill: console.log vs setText on screen
Random number out of range
"What min and max did you give randomNumber?"
"Is the top value included?"
"Log a few values β are they where you expect?"
Skill: check randomNumber(min, max) bounds
Checkbox / radio value not read
"How do you read whether it's checked β getChecked?"
"Are you using the right element id?"
"Is it true/false, not text?"
Skill: getChecked returns true/false
Dropdown selection is wrong
"How do you get the chosen option β getText(id)?"
"Does it match the option text exactly (caps, spaces)?"
"Log it β what does it actually say?"
Skill: read the dropdown by id, match exactly
Function returns nothing
"Does the function have a return?"
"What value comes back when you call it?"
"Is it printing instead of returning?"
Skill: return vs print
Two things share one variable name
"Is this name used for two different things?"
"Which value is in it right here?"
"Would a clearer name reveal the mix-up?"
Skill: one name, one job
Text invisible (same color as background)
"What color is the text vs the screen behind it?"
"Could they be the same?"
"Is the element actually on the active screen?"
Skill: check contrast + screen
Timer keeps running after screen change
"Did you stop the timedLoop when leaving the screen?"
"What does it keep doing in the background?"
"Where would you stop it?"
Skill: stop timers you no longer need
List index off by one
"What's the first index? What's list.length - 1?"
"Are you reaching one past the end?"
"Log the index right before it breaks."
Skill: last index is length β 1
Adds the wrong item to a list
"Is it appendItem (end) or insertItem (a spot)?"
"Which one do you actually want?"
"Print the list after β is it what you expect?"
Skill: append vs insert
Log the debugging skill each student needed
Two seconds after you coach someone, log it. Over a week you'll see exactly which skills to reteach β and to whom. Saved in this browser.