📖 VibeTourLet coding agents turn a codebase—or the changes they just made—into a guided walkthrough.
Install · Quick start · Coding agent skill · Lesson format
✨ After your coding agent creates the lesson, press Play to follow its explanation through the real source. VibeTour lets Codex, Claude Code, and other skill-compatible coding agents explain code as an interactive walkthrough inside VS Code. Ask an agent to teach you an unfamiliar subsystem, trace an execution path, or explain the work it just completed. The agent uses the current checkout and conversation to select focused source ranges, connect related files, and validate the lesson before VibeTour presents it.
🎯 MotivationLarge codebases are difficult to understand one file at a time. Important behavior is often spread across entry points, interfaces, state owners, and cleanup paths, leaving developers to reconstruct the real execution flow from searches and scattered references. Coding agents make changes quickly, but reviewing those changes can be just as challenging. A diff shows what changed; it rarely explains how the pieces work together, why each location matters, or which surrounding code deserves attention. VibeTour lets the agent turn the context it used while working into a focused, source-grounded walkthrough—so you can review a recent change or learn an unfamiliar subsystem one meaningful step at a time. ✨ From agent work to guided lesson
🌟 Highlights
✅ Requirements
📦 InstallDownload the latest Install it from a terminal:
Or open the VS Code Command Palette and run Extensions: Install from VSIX.... On Windows, do not double-click the VSIX: that may open the Visual Studio installer instead of VS Code. 🌐 Remote DevelopmentVibeTour runs as a workspace extension so it can read the project containing the lesson. For Remote SSH, WSL, Dev Containers, or Codespaces, install the VSIX from a VS Code window that is already connected to the remote workspace. If the file picker shows the remote filesystem, first copy the VSIX to the remote machine and select it there. For example, from a local PowerShell session:
Then run Extensions: Install from VSIX... in the connected window and select the file under 🚀 Quick start
VibeTour does not modify source files. Progress is stored in VS Code workspace state. 🤖 Let your coding agent author the lessonVibeTour includes the 🖱️ Install from VS CodeWhen no lesson is loaded, the VibeTour Lessons panel shows an Install or Update Authoring Skill button. VibeTour compares the bundled skill with the project-level and user-level Codex and Claude installations; once any of those locations already has the current bundled version, the panel button is hidden. The Command Palette entry remains available for installing the skill into another agent or scope. The installer lets you:
User installation means the user account where the VibeTour extension is running. In Remote SSH, WSL, Dev Containers, or Codespaces, that is the remote environment rather than the local computer. ⌨️ Install with
|
| Agent | Current workspace | Current user |
|---|---|---|
Codex / .agents |
.agents/skills/generate-code-lesson |
~/.agents/skills/generate-code-lesson |
| Claude Code | .claude/skills/generate-code-lesson |
~/.claude/skills/generate-code-lesson |
Codex scans .agents/skills from its starting directory up to the repository root, reads skill metadata for discovery, and loads the full SKILL.md only when selected. At workspace scope, several other compatible coding agents also scan the shared .agents/skills convention and can reuse the same copy. Do not assume the Codex user path is global to every agent: user-level locations differ by harness.
Claude Code searches project and parent .claude/skills directories up to the repository root, also discovers nested project skills on demand, and watches existing skill directories for changes. It does not use the Codex project directory, so select Claude Code separately. If a newly created top-level directory is not detected, restart the agent.
After Codex makes a change, ask it:
Use $generate-code-lesson to explain the changes you just made.
To explain an existing part of the codebase instead:
Use $generate-code-lesson to teach me how authentication flows through this codebase.
In Claude Code, use the slash-command form:
/generate-code-lesson Explain the changes you just made.
📝 Lesson format
The coding agent writes this format for VibeTour; users normally do not need to author it manually. It remains plain, reviewable YAML so teams can inspect, edit, and commit an explanation when it should travel with the code.
Each .code-lessons directory defines a lesson root: paths are resolved from its parent directory, and line numbers are 1-based and inclusive. A lesson at services/api/.code-lessons/walkthroughs/auth.yaml therefore resolves src/auth.ts as services/api/src/auth.ts. This supports workspaces containing multiple repositories without requiring each repository to be opened as a separate VS Code workspace folder.
schema_version: 1
lesson:
id: request-lifecycle
title: Request Lifecycle
description: Follow a request from admission to execution.
metadata:
type: walkthrough
lifecycle: temporary
chapters:
- id: request-admission
title: Request admission
steps:
- id: check-capacity
title: Check capacity
primary:
file: src/scheduler.py
range:
start_line: 17
end_line: 18
explanation: |
The scheduler asks [the block manager](https://github.com/serendipity-zk/VibeTour/blob/HEAD/code-ref:capacity-check)
whether the request fits before dispatching it.
key_points:
- A rejected request remains waiting.
related:
- id: capacity-check
title: Capacity decision
location:
file: src/block_manager.py
range:
start_line: 8
end_line: 10
The complete authoring contract and validator live in generate-code-lesson. The demo-workspace includes both a workspace-level multi-file lesson and a lesson owned by a nested repository.
🧭 Navigation and progress
- Play starts or resumes a Chapter at its first unfinished Step.
- Previous and Next move through the active Chapter.
- Done completes the current Step and advances automatically.
- Stop closes the current comment and highlights while keeping Chapter progress.
- Reset clears only that Chapter and leaves it stopped until Play is selected again.
- Completing a Chapter removes its comment and active highlights.
- Completed ranges keep normal source text with a subdued background.
- Related-code links open and highlight their target; Back returns to the lesson Step.
- Copy Step YAML preserves the explanation's
code-reflinks and related locations for an AI question.
⚙️ Configuration
| Setting | Default | Description |
|---|---|---|
codeLessons.searchPaths |
["**/.code-lessons/**/*.yaml", "**/.code-lessons/**/*.yml"] |
Glob patterns searched in each workspace folder, including nested repository roots. |
codeLessons.autoReload |
true |
Reload lessons when matching YAML files are created, changed, or deleted. |
Use the refresh icon in the VibeTour view to reload manually. Invalid lessons remain out of the tree and appear as diagnostics in the Problems panel.
🛠️ Development
npm install
npm run check
npm test
npm run build
Open the repository in VS Code and press F5 to launch an Extension Development Host with the bundled demo workspace. The explicit vibetour: build task creates the extension bundle before launch.
Build an installable VSIX with:
npm run package
🚢 Releases
The GitHub Actions workflow runs checks and tests, builds the bundle, and uploads a VSIX artifact. A tag matching v<package.json version> creates a GitHub Release and attaches the prebuilt VSIX; for example, package version 0.0.3 uses tag v0.0.3.
Manual workflow runs build the same downloadable artifact without creating a Release.
💬 Support
Report bugs and feature requests in GitHub Issues.