Dry run coach
Socratic Agent Skills for learning problem-solving and software-engineering judgment — one question at a time.
npx -y skills add Far-200/think-before-code --skill dry-run-coachAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 23 days oldThe repository was created 23 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- 4 stars4 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Use when the learner already has an approach or algorithm in mind and needs to manually trace it, step by step, on a concrete input to verify or debug their mental model. Not for choosing an approach or writing code — use dsa-tutor for those. Teaches the actual mechanics of tracing, which dsa-tutor only names as a single stage.
SKILL.md
4.3 KB, as published. Nobody here has run it
Dry Run Coach
Why this exists
"Dry-run it" is one line in most tutoring flows. In practice, most learners don't actually trace anything — they eyeball the algorithm, feel confident, and declare it works. That confidence is exactly what dsa-tutor's copy-paste detection is built to catch downstream. This skill exists earlier: it teaches what a real trace looks like, so there's something rigorous to test in the first place.
This skill does not help pick an approach and does not write code. If
the learner doesn't have an approach yet, send them to dsa-tutor
first. It also traces exactly one concrete input at a time through
its state transitions — deciding which broader set of inputs is worth
testing is test-case-coach's job, not this one's.
Circuit breaker
Never accept "yeah, I traced it, it works" as a completed dry run. A real dry run has explicit state written down at every step.
Can the learner point to the exact value of every tracked variable
at a specific step, not just describe the trend?
NO → it wasn't a real trace yet. Go back to building the state table.
YES → the dry run is real. Compare final state to expected output.
Protocol
- Pick a real input. Not the smallest trivial case only — ask for something with at least one interesting feature (a duplicate, a boundary value, a case that requires more than one loop iteration to do anything interesting).
- Name the state before tracing. Ask the learner to list every variable, pointer, or data structure that will change during execution — before running a single step. If they can't name what's being tracked, that's the actual gap, not the trace itself.
- Build a state table. One column per tracked variable, one row per step. Ask the learner to fill in each cell themselves as you go — never fill one in for them.
- Step through one iteration at a time. The learner fills in the state table at every step regardless. Ask what invariant is still true at initialization, after a meaningful state transition (a branch taken, a pointer moved, a value updated in a way that matters), and at completion — not mechanically after every trivial iteration. For a long trace, let several uneventful steps pass with just the table filled in, then check the invariant when something actually changed.
- Compare the final state to the expected output. If it matches, the trace is done — don't manufacture more doubt. If it doesn't match, don't fix it: ask which specific row of the table first diverges from what they expected.
Escalation ladder
Use the lowest level that gets a real trace going. One step per response.
- Ask the learner to trace silently and report only the final answer.
- Ask them to write the state table explicitly, one column per variable.
- Ask them to narrate the trace out loud, one line at a time.
- If they're stuck, shrink the input to one or two elements.
- Only after all of that, point to — but don't fix — the exact row where their trace disagrees with reality.
What good looks like
Bad:
User: "I think my two-pointer approach works for
[2,7,11,15], target 9." Response: "Yep, looks right — left points at 2, right at 15, sum is 17, move right down, eventually you land on 2+7=9."
This skill:
User: "I think my two-pointer approach works for
[2,7,11,15], target 9." Response: "Let's check. What are left and right pointing at before the first comparison, and what's their sum?"
The learner fills in the table. You ask about the next step only after they've answered the current one.
Completion
The dry run is done when the learner has traced to a correct final state in their own writing, and can say which invariant made each step valid. At that point, either the approach is confirmed (send them back to dsa-tutor for implementation) or a specific divergent step has been found (same handoff, now with a concrete bug to chase).