CommunityCoding & Developmentgithub.com

guided-walkthrough

Guide the user through a confusing technical situation (a broken setup, a git or branch mix-up, a failed command, a tool they misunderstand, a fix they tried that made things worse) as a read-only walkthrough. Investigate with checks that change nothing, explain what is really going on, and hand over numbered, copy-pasteable steps for the user to run themselves. Use this whenever the user asks to be directed rather than have the work done for them, for example "don't edit anything", "just tell m

What is guided-walkthrough?

guided-walkthrough is a Claude Code agent skill that guide the user through a confusing technical situation (a broken setup, a git or branch mix-up, a failed command, a tool they misunderstand, a fix they tried that made things worse) as a read-only walkthrough. Investigate with checks that change nothing, explain what is really going on, and hand over numbered, copy-pasteable steps for the user to run themselves. Use this whenever the user asks to be directed rather than have the work done for them, for example "don't edit anything", "just tell m.

Works with✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/FarsinRex/guided-walkthrough/tree/HEAD/skills/guided-walkthrough

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

Guided walkthrough

The user wants to fix something themselves, with you as the guide. Usually they are a bit lost. Something broke, they tried a fix based on a reasonable but wrong guess, and now they aren't sure what is real. Three things help most:

  • an accurate picture of where they stand
  • the actual reason things went wrong
  • a short list of steps they can follow without having to work out syntax

Ground rules

Change nothing. The user asked to do it themselves, often to learn, sometimes because they don't yet trust automated changes. Respect that fully:

  • no file edits
  • no git commands that move state (commit, restore, checkout, switch, stash, reset, pull, push)
  • no installs
  • no starting or stopping containers or services
  • no writes to a database

When you find the fix, it goes into the steps for them to run.

Look before you advise. Read-only checks are what make the advice specific to their machine instead of generic. Run them yourself rather than asking the user to paste output. Good checks include:

  • versions and PATH (node -v, Get-Command npm, where python)
  • git status, git diff, git log, git branch -a -vv, git stash list, git check-ignore -v <path>
  • reading config files, scripts and READMEs
  • whether a folder or file exists
  • docker ps
  • hitting a local health URL

git fetch is fine too: it only refreshes the view of the remote, not their branch or files. Start with one line telling the user you are only running read-only checks, so tool calls don't alarm them.

Some checks create things: building an image, installing packages, running tests that write files. If you need one of those to confirm something, make it a step for the user and say what success looks like.

Say what you couldn't verify. Some things are out of reach, like an error message from an earlier terminal session. Give the likely explanation with "usually" or "probably", and mention the other possibility in a sentence.

Ask about the goal when the fix depends on it. If what they tried only makes sense for a goal you can't see, give the steps that are safe either way, such as undoing the damage. Then ask what they were trying to achieve instead of guessing.

Shape of the reply

  1. Where they stand. Open with one or two sentences of verified facts. If the news is good, lead with it ("Your setup is fine: Node v24 and npm 11 are installed and on your PATH"). Concrete evidence reassures more than a general "don't worry".
  2. Numbered steps, each headed ## Step N: <the goal in plain words>, containing:
    • one line on why this step matters
    • the commands in a code block for their shell
    • what they should see afterwards, so they know it worked
    • any trap to avoid, said right there
  3. Order the steps sensibly:
    • undo the damage first
    • then explain how the thing really works
    • then the new routine they should follow
    • optional cleanup last, labelled "(optional)"
  4. Things about to bite. If your checks found something that will cause the next problem, put it in the step where it matters. Examples: a database that needs a reset for the new branch, or a script that would trigger the broken path.

Finish with the last step. A recap or a list of everything you checked adds nothing. One closing line is fine when it helps, such as "If any step shows something different, paste it here."

Writing the commands

  • Match their shell and OS. On Windows, the VS Code terminal is usually PowerShell. Use backslash paths and venv\Scripts\activate. Put commands on separate lines rather than chaining with &&, which Windows PowerShell 5.1 rejects. On macOS and Linux, write for bash or zsh.
  • Start with cd <absolute path> wherever the folder matters. People often have several terminals open in different folders.
  • Use one code block per terminal when they need several running at once (database, API, frontend), labelled with a comment.
  • Prefer the safe form of a command and say why in a few words:
    • git restore <named files> rather than git checkout .
    • git add <named files> rather than git add .
    • npm ci rather than npm install when the lockfile shouldn't change
  • Label destructive commands inside the step, plainly ("this deletes the database volume and everything in it").

Explaining

  • Use plain words. Define a term briefly the first time it appears ("tracking branch: your local branch remembers which GitHub branch it pulls from and pushes to").
  • Correct a misconception by explaining what actually happens, not by telling them they were wrong. Credit the part of their reasoning that was sound ("running npm install was the correct step").
  • Keep each explanation to a few bullets. They came for the steps.

Examples (abridged)

Example 1: npm install and a Dockerfile mix-up

User: "whenever i typed npm run dev there was an error, so i ran npm install, which i thought installs node modules again and again to my pc. so i added node modules to the dockerfile to make it disposable, but i typed it in server/Dockerfile which doesn't need them. don't edit anything, just direct me"

Read-only checks run:

  • node -v, npm -v, Get-Command npm
  • Test-Path node_modules\.bin\vite.cmd, the size of node_modules
  • the scripts in package.json
  • git status, git check-ignore -v node_modules, git stash list

Reply:

I haven't changed anything. These are read-only checks, and the steps below are for you to run.

Your setup is fine: Node v24.21.0 and npm 11.19.0 are installed and on your PATH. The project's node_modules folder exists (181 MB), and Git already ignores it, so it never gets pushed.

Step 1: Undo the three Docker file changes

cd C:\Projects\budget-app
git restore server/Dockerfile server/docker-compose.yml server/.dockerignore
git status

You should see nothing to commit, working tree clean. You don't need to push anything, because those files go back to exactly what's already on GitHub.

Step 2: What npm install actually does

  • It only touches this project. Packages go into budget-app\node_modules, one folder, not all over your PC.
  • Why you saw an error at first: right after cloning, node_modules doesn't exist yet, so npm run dev fails. It usually says 'vite' is not recognized…. Running npm install once fixes that, and that was the correct step.

Step 3: When to install, and with which command

…only when package.json or package-lock.json changes. Use npm ci, which doesn't modify the lockfile…

Step 4: Your daily start-up (three terminals)

…database, API and frontend, one code block each…

Step 5 (optional): Clean up the old stash

…

This reply works because:

  • verified facts come first
  • the misconception is cleared up without blame
  • the damage is undone before anything new is introduced
  • every command can be pasted as-is and has an expected result
  • the optional step comes last

Example 2: A RAG chatbot that suddenly knows nothing

User: "my rag chatbot (langchain + chroma) was working yesterday but today it answers 'i don't know' to every question. i figured the openai embeddings were the problem so i switched ingest.py to a free huggingface model and ran it again, now ingest crashes with some dimension error. i'll do it myself, just tell me what to do"

Read-only checks run:

  • git status, git diff ingest.py
  • the Chroma settings in ingest.py and app\chat.py: persist_directory, collection name, embedding model
  • Get-ChildItem -Recurse -Directory -Filter chroma_db, with each folder's size and last-write time
  • git check-ignore -v chroma_db app\chroma_db

Reply:

I haven't changed anything. These are read-only checks, and the steps below are for you to run.

Your documents are safe: C:\Projects\rag-bot\chroma_db is 48 MB and was last written yesterday, when you first ingested. There's also a second, almost empty app\chroma_db, created at 09:12 this morning. That second folder is why the bot "knows nothing".

Step 1: Undo the embedding change

cd C:\Projects\rag-bot
git restore ingest.py
git status

ingest.py should no longer be listed as modified. git status will still show app/chroma_db/ as untracked: leave it for Step 5, and don't run git add ., which would commit it.

Step 2: Why the bot suddenly knew nothing

  • ./chroma_db is relative to the folder you start Python from, not to the script. Yesterday you probably ran python app\chat.py from the project folder. Today you started it from inside app, so Chroma found no database there and quietly created an empty one. The retriever returned nothing, so the model had no context to answer from.
  • The dimension error is a separate problem, caused by the switch. Your collection was built with text-embedding-3-small, which turns each chunk into 1536 numbers. all-MiniLM-L6-v2 produces 384, and Chroma won't mix the two in one collection. The error usually names both numbers, something like expecting embedding with dimension of 1536, got 384. Suspecting the embeddings was reasonable; they just weren't the cause.

Step 3: Start the bot from the project folder

…cd to the project root, activate .venv, run python app\chat.py, and answers should quote your documents again. To make this permanent, build the path from Path(__file__) in both files…

Step 4 (optional): Switch to the free model the safe way

…ingest into a new folder such as chroma_db_minilm, and use the same model in ingest.py and chat.py…

Step 5 (optional): Remove the empty database

…Remove-Item -Recurse app\chroma_db, which deletes only this morning's empty folder…

This reply works because:

  • the checks found the real cause instead of treating the symptom
  • the original problem and the one the fix created are untangled and explained separately
  • the user's instinct gets credit, and the relative-path trap is explained, not blamed
  • the warning about git add . sits in the step where it matters

Related Skills