Code tour
Use when the user asks to create a CodeTour .tour file — persona-targeted, step-by-step walkthroughs that link to real files and line numbers.
How to use it
Claude Code
- Run the line below. It pulls the whole folder into
~/.claude/skills/code-tour. - Describe your job in plain words. Claude Code follows the skill from there.
npx degit alirezarezvani/claude-skills/engineering/code-tour/skills/code-tour#main ~/.claude/skills/code-tourFor one project only, change the path to .claude/skills/code-tour.
Claude (web or desktop app)
- On this page open ⋯ → Download .md.
- Save it as SKILL.md in a folder, zip the folder, then Customize → Skills → + → Create skill → Upload a skill.
- Pick the file and Save. Claude shows the name and description and runs a security scan.
- Check the skill is switched on.
- Start a new chat and describe your job in plain words. The AI follows the skill from there.
ChatGPT or another app
- ChatGPT: make a Project and paste it into Instructions.
- Neither? Paste it at the top of a new chat — it works for that chat.
Not working?
- Check which app you pasted it into — the steps above name the right one.
- Some skills need the paid tier of Claude or ChatGPT.
Paste into Claude, ChatGPT or Cursor.
Source of Code tour
Show the full text141 lines
| name | description |
|---|---|
| code-tour | Use when the user asks to create a CodeTour .tour file — persona-targeted, step-by-step walkthroughs that link to real files and line numbers. Trigger for: create a tour, onboarding tour, architecture tour, PR review tour, explain how X works, vibe check, RCA tour, contributor guide, or any structured code walkthrough request. |
Code Tour
Create CodeTour files — persona-targeted, step-by-step walkthroughs of a codebase that link directly to files and line numbers. CodeTour files live in .tours/ and work with the VS Code CodeTour extension.
Overview
A great tour is a narrative — a story told to a specific person about what matters, why it matters, and what to do next. Only create .tour JSON files. Never modify source code.
When to Use This Skill
- User asks to create a code tour, onboarding tour, or architecture walkthrough
- User says "tour for this PR", "explain how X works", "vibe check", "RCA tour"
- User wants a contributor guide, security review, or bug investigation walkthrough
- Any request for a structured walkthrough with file/line anchors
Core Workflow
1. Discover the repo
Before asking anything, explore the codebase:
In parallel: list root directory, read README, check config files. Then: identify language(s), framework(s), project purpose. Map folder structure 1-2 levels deep. Find entry points — every path in the tour must be real.
If the repo has fewer than 5 source files, create a quick-depth tour regardless of persona — there's not enough to warrant a deep one.
2. Infer the intent
One message should be enough. Infer persona, depth, and focus silently.
| User says | Persona | Depth |
|---|---|---|
| "tour for this PR" | pr-reviewer | standard |
| "why did X break" / "RCA" | rca-investigator | standard |
| "onboarding" / "new joiner" | new-joiner | standard |
| "quick tour" / "vibe check" | vibecoder | quick |
| "architecture" | architect | deep |
| "security" / "auth review" | security-reviewer | standard |
| (no qualifier) | new-joiner | standard |
When intent is ambiguous, default to new-joiner persona at standard depth — it's the most generally useful.
3. Read actual files
Every file path and line number must be verified. A tour pointing to the wrong line is worse than no tour.
4. Write the tour
Save to .tours/<persona>-<focus>.tour.
{
"$schema": "https://aka.ms/codetour-schema",
"title": "Descriptive Title — Persona / Goal",
"description": "Who this is for and what they'll understand after.",
"ref": "<current-branch-or-commit>",
"steps": []
}
Step types
| Type | When to use | Example |
|---|---|---|
| Content | Intro/closing only (max 2) | { "title": "Welcome", "description": "..." } |
| Directory | Orient to a module | { "directory": "src/services", "title": "..." } |
| File + line | The workhorse | { "file": "src/auth.ts", "line": 42, "title": "..." } |
| Selection | Highlight a code block | { "file": "...", "selection": {...}, "title": "..." } |
| Pattern | Regex match (volatile files) | { "file": "...", "pattern": "class App", "title": "..." } |
| URI | Link to PR, issue, doc | { "uri": "https://...", "title": "..." } |
Step count
| Depth | Steps | Use for |
|---|---|---|
| Quick | 5-8 | Vibecoder, fast exploration |
| Standard | 9-13 | Most personas |
| Deep | 14-18 | Architect, RCA |
Writing descriptions — SMIG formula
- S — Situation: What is the reader looking at?
- M — Mechanism: How does this code work?
- I — Implication: Why does this matter for this persona?
- G — Gotcha: What would a smart person get wrong?
5. Validate
- Every
filepath relative to repo root (no leading/or./) - Every
fileconfirmed to exist - Every
lineverified by reading the file - First step has
fileordirectoryanchor - At most 2 content-only steps
-
nextTourmatches another tour'stitleexactly if set
Personas
| Persona | Goal | Must cover |
|---|---|---|
| Vibecoder | Get the vibe fast | Entry point, main modules. Max 8 steps. |
| New joiner | Structured ramp-up | Directories, setup, business context |
| Bug fixer | Root cause fast | Trigger -> fault points -> tests |
| RCA investigator | Why did it fail | Causality chain, observability anchors |
| Feature explainer | End-to-end | UI -> API -> backend -> storage |
| PR reviewer | Review correctly | Change story, invariants, risky areas |
| Architect | Shape and rationale | Boundaries, tradeoffs, extension points |
| Security reviewer | Trust boundaries | Auth flow, validation, secret handling |
| Refactorer | Safe restructuring | Seams, hidden deps, extraction order |
| External contributor | Contribute safely | Safe areas, conventions, landmines |
Narrative Arc
- Orientation —
fileordirectorystep (never content-only first step — blank in VS Code) - High-level map — 1-3 directory steps showing major modules
- Core path — file/line steps, the heart of the tour
- Closing — what the reader can now do, suggested follow-ups
Anti-Patterns
| Anti-pattern | Fix |
|---|---|
| File listing — "this file contains the models" | Tell a story. Each step depends on the previous. |
| Generic descriptions | Name the specific pattern unique to this codebase. |
| Line number guessing | Never write a line you didn't verify by reading. |
| Too many steps for quick depth | Actually cut steps. |
| Hallucinated files | If it doesn't exist, skip the step. |
| Recap closing — "we covered X, Y, Z" | Tell the reader what they can now do. |
| Content-only first step | Anchor step 1 to a file or directory. |
Cross-References
- Related:
engineering/codebase-onboarding— for broader onboarding beyond tours - Related:
engineering/pr-review-expert— for automated PR review workflows - CodeTour extension: microsoft/codetour
- Real-world tours: coder/code-server
| 1 | |
| 2 | name "code-tour" |
| 3 | description "Use when the user asks to create a CodeTour .tour file — persona-targeted, step-by-step walkthroughs that link to real files and line numbers. Trigger for: create a tour, onboarding tour, architecture tour, PR review tour, explain how X works, vibe check, RCA tour, contributor guide, or any structured code walkthrough request." |
| 4 | |
| 5 | |
| 6 | # Code Tour |
| 7 | |
| 8 | Create **CodeTour** files — persona-targeted, step-by-step walkthroughs of a codebase that link directly to files and line numbers. CodeTour files live in `.tours/` and work with the [VS Code CodeTour extension]. |
| 9 | |
| 10 | ## Overview |
| 11 | |
| 12 | A great tour is a **narrative** — a story told to a specific person about what matters, why it matters, and what to do next. Only create `.tour` JSON files. Never modify source code. |
| 13 | |
| 14 | ## When to Use This Skill |
| 15 | |
| 16 | User asks to create a code tour, onboarding tour, or architecture walkthrough |
| 17 | User says "tour for this PR", "explain how X works", "vibe check", "RCA tour" |
| 18 | User wants a contributor guide, security review, or bug investigation walkthrough |
| 19 | Any request for a structured walkthrough with file/line anchors |
| 20 | |
| 21 | ## Core Workflow |
| 22 | |
| 23 | ### 1. Discover the repo |
| 24 | |
| 25 | Before asking anything, explore the codebase: |
| 26 | |
| 27 | In parallel: list root directory, read README, check config files. |
| 28 | Then: identify language(s), framework(s), project purpose. Map folder structure 1-2 levels deep. Find entry points — every path in the tour must be real. |
| 29 | |
| 30 | If the repo has fewer than 5 source files, create a quick-depth tour regardless of persona — there's not enough to warrant a deep one. |
| 31 | |
| 32 | ### 2. Infer the intent |
| 33 | |
| 34 | One message should be enough. Infer persona, depth, and focus silently. |
| 35 | |
| 36 | | User says | Persona | Depth | |
| 37 | |-----------|---------|-------| |
| 38 | | "tour for this PR" | pr-reviewer | standard | |
| 39 | | "why did X break" / "RCA" | rca-investigator | standard | |
| 40 | | "onboarding" / "new joiner" | new-joiner | standard | |
| 41 | | "quick tour" / "vibe check" | vibecoder | quick | |
| 42 | | "architecture" | architect | deep | |
| 43 | | "security" / "auth review" | security-reviewer | standard | |
| 44 | | (no qualifier) | new-joiner | standard | |
| 45 | |
| 46 | When intent is ambiguous, default to **new-joiner** persona at **standard** depth — it's the most generally useful. |
| 47 | |
| 48 | ### 3. Read actual files |
| 49 | |
| 50 | **Every file path and line number must be verified.** A tour pointing to the wrong line is worse than no tour. |
| 51 | |
| 52 | ### 4. Write the tour |
| 53 | |
| 54 | Save to `.tours/<persona>-<focus>.tour`. |
| 55 | |
| 56 | |
| 57 | { |
| 58 | "$schema": "https://aka.ms/codetour-schema", |
| 59 | "title": "Descriptive Title — Persona / Goal", |
| 60 | "description": "Who this is for and what they'll understand after.", |
| 61 | "ref": "<current-branch-or-commit>", |
| 62 | "steps": [] |
| 63 | } |
| 64 | |
| 65 | |
| 66 | ### Step types |
| 67 | |
| 68 | | Type | When to use | Example | |
| 69 | |------|-------------|---------| |
| 70 | | **Content** | Intro/closing only (max 2) | `{ "title": "Welcome", "description": "..." }` | |
| 71 | | **Directory** | Orient to a module | `{ "directory": "src/services", "title": "..." }` | |
| 72 | | **File + line** | The workhorse | `{ "file": "src/auth.ts", "line": 42, "title": "..." }` | |
| 73 | | **Selection** | Highlight a code block | `{ "file": "...", "selection": {...}, "title": "..." }` | |
| 74 | | **Pattern** | Regex match (volatile files) | `{ "file": "...", "pattern": "class App", "title": "..." }` | |
| 75 | | **URI** | Link to PR, issue, doc | `{ "uri": "https://...", "title": "..." }` | |
| 76 | |
| 77 | ### Step count |
| 78 | |
| 79 | | Depth | Steps | Use for | |
| 80 | |-------|-------|---------| |
| 81 | | Quick | 5-8 | Vibecoder, fast exploration | |
| 82 | | Standard | 9-13 | Most personas | |
| 83 | | Deep | 14-18 | Architect, RCA | |
| 84 | |
| 85 | ### Writing descriptions — SMIG formula |
| 86 | |
| 87 | **S — Situation**: What is the reader looking at? |
| 88 | **M — Mechanism**: How does this code work? |
| 89 | **I — Implication**: Why does this matter for this persona? |
| 90 | **G — Gotcha**: What would a smart person get wrong? |
| 91 | |
| 92 | ### 5. Validate |
| 93 | |
| 94 | [ ] Every `file` path relative to repo root (no leading `/` or `./`) |
| 95 | [ ] Every `file` confirmed to exist |
| 96 | [ ] Every `line` verified by reading the file |
| 97 | [ ] First step has `file` or `directory` anchor |
| 98 | [ ] At most 2 content-only steps |
| 99 | [ ] `nextTour` matches another tour's `title` exactly if set |
| 100 | |
| 101 | ## Personas |
| 102 | |
| 103 | | Persona | Goal | Must cover | |
| 104 | |---------|------|------------| |
| 105 | | **Vibecoder** | Get the vibe fast | Entry point, main modules. Max 8 steps. | |
| 106 | | **New joiner** | Structured ramp-up | Directories, setup, business context | |
| 107 | | **Bug fixer** | Root cause fast | Trigger -> fault points -> tests | |
| 108 | | **RCA investigator** | Why did it fail | Causality chain, observability anchors | |
| 109 | | **Feature explainer** | End-to-end | UI -> API -> backend -> storage | |
| 110 | | **PR reviewer** | Review correctly | Change story, invariants, risky areas | |
| 111 | | **Architect** | Shape and rationale | Boundaries, tradeoffs, extension points | |
| 112 | | **Security reviewer** | Trust boundaries | Auth flow, validation, secret handling | |
| 113 | | **Refactorer** | Safe restructuring | Seams, hidden deps, extraction order | |
| 114 | | **External contributor** | Contribute safely | Safe areas, conventions, landmines | |
| 115 | |
| 116 | ## Narrative Arc |
| 117 | |
| 118 | **Orientation** — `file` or `directory` step (never content-only first step — blank in VS Code) |
| 119 | **High-level map** — 1-3 directory steps showing major modules |
| 120 | **Core path** — file/line steps, the heart of the tour |
| 121 | **Closing** — what the reader can now do, suggested follow-ups |
| 122 | |
| 123 | ## Anti-Patterns |
| 124 | |
| 125 | | Anti-pattern | Fix | |
| 126 | |---|---| |
| 127 | | **File listing** — "this file contains the models" | Tell a story. Each step depends on the previous. | |
| 128 | | **Generic descriptions** | Name the specific pattern unique to this codebase. | |
| 129 | | **Line number guessing** | Never write a line you didn't verify by reading. | |
| 130 | | **Too many steps** for quick depth | Actually cut steps. | |
| 131 | | **Hallucinated files** | If it doesn't exist, skip the step. | |
| 132 | | **Recap closing** — "we covered X, Y, Z" | Tell the reader what they can now *do*. | |
| 133 | | **Content-only first step** | Anchor step 1 to a file or directory. | |
| 134 | |
| 135 | ## Cross-References |
| 136 | |
| 137 | Related: `engineering/codebase-onboarding` — for broader onboarding beyond tours |
| 138 | Related: `engineering/pr-review-expert` — for automated PR review workflows |
| 139 | CodeTour extension: [microsoft/codetour] |
| 140 | Real-world tours: [coder/code-server] |
| 141 |
Discussion
Browse more free Claude skills.