code-tour
Use this skill to create CodeTour .tour files — persona-targeted, step-by-step walkthroughs that link to real files and line numbers.
Install / Use
npx skills add github/awesome-copilot --skill code-tourInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
Customer SupportSupported Platforms
Our assessment of code-tour
code-tour scores 91/100 on our quality scale, 48th of 188 Customer Support skills we index (top 26%).
Its SKILL.md is 22 KB long, well organised into 28 sections with 5 code examples: a thorough specification that gives an agent plenty to work with.
With 39,348 GitHub stars, it is one of the more widely adopted skills in the catalogue.
Maintenance, license and trust
- The repository was last updated 3 days ago, so code-tour is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
code-tour compared with similar skills
All 4 of these similar skills score higher than code-tour; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| code-tour (this skill)by github | 91 | 39.3k | 3d ago | SKILL.md |
| algorithmic-artby anthropics | 100 | 177.9k | 5d ago | SKILL.md |
| pptxby anthropics | 100 | 177.9k | 5d ago | SKILL.md |
| designby nextlevelbuilder | 100 | 130.2k | 6d ago | SKILL.md |
| ui-ux-pro-maxby nextlevelbuilder | 100 | 130.2k | 6d ago | SKILL.md |
Frequently asked questions
- How do I install code-tour?
- Run
npx skills add github/awesome-copilot --skill code-tour. The install tabs above show the steps for each supported agent. - Which AI agents does code-tour work with?
- It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is code-tour safe to use?
- It is MIT-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is code-tour still maintained?
- The repository was last updated 3 days ago, so code-tour is actively maintained.
Skill content
View source on GitHubname: code-tour description: > Use this skill to create CodeTour .tour files — persona-targeted, step-by-step walkthroughs that link to real files and line numbers. Trigger for: "create a tour", "make a code tour", "generate a tour", "onboarding tour", "tour for this PR", "tour for this bug", "RCA tour", "architecture tour", "explain how X works", "vibe check", "PR review tour", "contributor guide", "help someone ramp up", or any request for a structured walkthrough through code. Supports 20 developer personas (new joiner, bug fixer, architect, PR reviewer, vibecoder, security reviewer, and more), all CodeTour step types (file/line, selection, pattern, uri, commands, view), and tour-level fields (ref, isPrimary, nextTour). Works with any repository in any language.
Code Tour Skill
You are creating a CodeTour — a persona-targeted, step-by-step walkthrough of a codebase
that links directly to files and line numbers. CodeTour files live in .tours/ and work with
the VS Code CodeTour extension.
Two scripts are bundled in scripts/:
scripts/validate_tour.py— run after writing any tour. Checks JSON validity, file/directory existence, line numbers within bounds, pattern matches, nextTour cross-references, and narrative arc. Run it:python ~/.agents/skills/code-tour/scripts/validate_tour.py .tours/<name>.tour --repo-root .scripts/generate_from_docs.py— when the user asks to generate from README/docs, run this first to extract a skeleton, then fill it in. Run it:python ~/.agents/skills/code-tour/scripts/generate_from_docs.py --persona new-joiner --output .tours/skeleton.tour
Two reference files are bundled:
references/codetour-schema.json— the authoritative JSON schema. Read it to verify any field name or type. Every field you use must conform to it.references/examples.md— 8 real-world CodeTour tours from production repos with annotated techniques. Read it when you want to see how a specific feature (commands,selection,view,pattern,isPrimary, multi-tour series) is used in practice.
Real-world .tour files on GitHub
These are confirmed production .tour files. Fetch one when you need a working example of a specific step type, tour-level field, or narrative structure — don't write from memory when the real thing is one fetch away.
Find more with the GitHub code search: https://github.com/search?q=path%3A**%2F*.tour+&type=code
By step type / technique demonstrated
| What to study | File URL |
|---|---|
| directory + file+line (contributor onboarding) | https://github.com/coder/code-server/blob/main/.tours/contributing.tour |
| selection + file+line + intro content step (accessibility project) | https://github.com/a11yproject/a11yproject.com/blob/main/.tours/code-tour.tour |
| Minimal tutorial — tight file+line narration for interactive learning | https://github.com/lostintangent/rock-paper-scissors/blob/master/main.tour |
| Multi-tour repo with nextTour chaining (cloud native OCI walkthroughs) | https://github.com/lucasjellema/cloudnative-on-oci-2021/blob/main/.tours/introduction.tour |
| isPrimary: true (marks the onboarding entry point) | https://github.com/nickvdyck/webbundlr/blob/main/.tours/getting-started.tour |
| pattern instead of line (regex-anchored steps) | https://github.com/nickvdyck/webbundlr/blob/main/.tours/architecture.tour |
Raw content tip: Prefix raw.githubusercontent.com and drop /blob/ for raw JSON access.
A great tour is not just annotated files. It is a narrative — a story told to a specific person about what matters, why it matters, and what to do next. Your goal is to write the tour that the right person would wish existed when they first opened this repo.
CRITICAL: Only create .tour JSON files. Never create, modify, or scaffold any other files.
Step 1: Discover the repo
Before asking the user anything, explore the codebase:
- List the root directory, read the README, and check key config files (package.json, pyproject.toml, go.mod, Cargo.toml, composer.json, etc.)
- Identify the language(s), framework(s), and what the project does
- Map the folder structure 1–2 levels deep
- Find entry points: main files, index files, app bootstrapping
- Note which files actually exist — every path you write in the tour must be real
If the repo is sparse or empty, say so and work with what exists.
If the user says "generate from README" or "use the docs": run the skeleton generator first, then fill in every [TODO: ...] by reading the actual files:
python skills/code-tour/scripts/generate_from_docs.py \
--persona new-joiner \
--output .tours/skeleton.tour
Entry points by language/framework
Don't read everything — start here, then follow imports.
| Stack | Entry points to read first |
|-------|---------------------------|
| Node.js / TS | index.js/ts, server.js, app.js, src/main.ts, package.json (scripts) |
| Python | main.py, app.py, __main__.py, manage.py (Django), app/__init__.py (Flask/FastAPI) |
| Go | main.go, cmd/<name>/main.go, internal/ |
| Rust | src/main.rs, src/lib.rs, Cargo.toml |
| Java / Kotlin | *Application.java, src/main/java/.../Main.java, build.gradle |
| Ruby | config/application.rb, config/routes.rb, app/controllers/application_controller.rb |
| PHP | index.php, public/index.php, bootstrap/app.php (Laravel) |
Repo type variants — adjust focus accordingly
The same persona asks for different things depending on what kind of repo this is:
| Repo type | What to emphasize | Typical anchor files | |-----------|-------------------|----------------------| | Service / API | Request lifecycle, auth, error contracts | router, middleware, handler, schema | | Library / SDK | Public API surface, extension points, versioning | index/exports, types, changelog | | CLI tool | Command parsing, config loading, output formatting | main, commands/, config | | Monorepo | Package boundaries, shared contracts, build graph | root package.json/pnpm-workspace, shared/, packages/ | | Framework | Plugin system, lifecycle hooks, escape hatches | core/, plugins/, lifecycle | | Data pipeline | Source → transform → sink, schema ownership | ingest/, transform/, schema/, dbt models | | Frontend app | Component hierarchy, state management, routing | pages/, store/, router, api/ |
For monorepos: identify the 2–3 packages most relevant to the persona's goal. Don't try to tour everything — open the tour with a step that explains how to navigate the workspace, then stay focused.
Large repo strategy
For repos with 100+ files: don't try to read everything.
- Read entry points and the README first
- Build a mental model of the top 5–7 modules
- For the requested persona, identify the 2–3 modules that matter most and read those deeply
- For modules you're not covering, mention them in the intro step as "out of scope for this tour"
- Use
directorysteps for areas you mapped but didn't read — they orient without requiring full knowledge
A focused 10-step tour of the right files beats a scattered 25-step tour of everything.
Step 2: Read the intent — infer everything you can, ask only what you can't
One message from the user should be enough. Read their request and infer persona, depth, and focus before asking anything.
Intent map
| User says | → Persona | → Depth | → Action |
|-----------|-----------|---------|----------|
| "tour for this PR" / "PR review" / "#123" | pr-reviewer | standard | Add uri step for the PR; use ref for the branch |
| "why did X break" / "RCA" / "incident" | rca-investigator | standard | Trace the failure causality chain |
| "debug X" / "bug tour" / "find the bug" | bug-fixer | standard | Entry → fault points → tests |
| "onboarding" / "new joiner" / "ramp up" | new-joiner | standard | Directories, setup, business context |
| "quick tour" / "vibe check" / "just the gist" | vibecoder | quick | 5–8 steps, fast path only |
| "explain how X works" / "feature tour" | feature-explainer | standard | UI → API → backend → storage |
| "architecture" / "tech lead" / "system design" | architect | deep | Boundaries, decisions, tradeoffs |
| "security" / "auth review" / "trust boundaries" | security-reviewer | standard | Auth flow, validation, sensitive sinks |
| "refactor" / "safe to extract?" | refactorer | standard | Seams, hidden deps, extraction order |
| "performance" / "bottlenecks" / "slow path" | performance-optimizer | standard | Hot path, N+1, I/O, caches |
| "contributor" / "open source onboarding" | external-contributor | quick | Safe areas, conventions, landmines |
| "concept" / "explain pattern X" | concept-learner | standard | Concept → implementation → rationale |
| "test coverage" / "where to add tests" | test-writer | standard | Contracts, seams, coverage gaps |
| "how do I call the API" | api-consumer | standard | Public surface, auth, error semantics |
Infer silently: persona, depth, focus area, whether to add uri/ref, isPrimary.
Ask only if you genuinely can't infer:
- "bug tour" but no bug described → ask for the bug description
- "feature tour" but no feature named → ask which feature
- "specific files" explicitly requested → honor them as required stops
Never ask about nextTour, commands, when, or stepMarker unless the user mentioned them.
PR tour recipe
For PR tours: set "ref" to the branch, open with a uri step for the PR, cover changed files first, then unchanged-but-critical files, close with a reviewer checklist.
User-provided customization — always honor these
| User says | What to do |
|-----------|-----------|
| "cover src/auth.ts and config/db.yml" | Those files are required stops |
| "pin to the v2.3.0 tag" / "this commit: abc123" | Set "ref": "v2.3.0" |
| "link to PR #456" / pastes a URL | Add a uri step at the right narrative moment |
| "lead into the security tour when done" | Set "nextTour": "Security Review" |
| "make this the main onboarding tour" | Set "isPrimary": true |
| "open a terminal at this step" | Add "commands": ["workbench.action.terminal.focus"] |
| "deep" / "thorough" / "5 steps" / "quick" | Override depth accordingly |
Step 3: Read the actual files — no exceptions
Every file path and line number in the tour must be verified by reading the file. A tour pointing to the wrong file or a non-existent line is worse than no tour.
For every planned step:
- Read the file
- Find the exact line of the code you want to highlight
- Understand it well enough to explain it to the target persona
If a user-requested file doesn't exist, say so — don't silently substitute another.
Step 4: Write the tour
Save to .tours/<persona>-<focus>.tour. Read references/codetour-schema.json for the
authoritative field list. Every field you use must appear in that schema.
Tour root
{
"$schema": "https://aka.ms/codetour-schema",
"title": "Descriptive Title — Persona / Goal",
"description": "One sentence: who this is for and what they'll understand after.",
"ref": "main",
"isPrimary": false,
"nextTour": "Title of follow-up tour",
"steps": []
}
Omit any field that doesn't apply to this tour.
when — conditional display. A JavaScript expression evaluated at runtime. Only show this tour
if the condition is true. Useful for persona-specific auto-launching, or hiding advanced tours
until a simpler one is complete.
{ "when": "workspaceFolders[0].name === 'api'" }
stepMarker — embed step anchors directly in source code comments. When set, CodeTour
looks for // <stepMarker> comments in files and uses them as step positions instead of
(or alongside) line numbers. Useful for tours on actively changing code where line numbers
shift cons
Truncated for display — read the full file on GitHub.
Related Skills
algorithmic-art
177.9kCreating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems.
pptx
177.9kUse this skill any time a .pptx or .potx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx or .potx file (even if the extracted content will be used elsewhere, like in an em…
design
130.2kComprehensive design skill: brand identity, design tokens, UI styling, logo generation (55 styles, Gemini, Atlas Cloud, or MuAPI AI), corporate identity program (50 deliverables, CIP mockups), HTML presentations (Chart.js), banner design (22 styles, social/ads/web/print), icon design (15 styles, SVG…
ui-ux-pro-max
130.2kUI/UX design intelligence for web, mobile, and desktop. This skill should be used when designing, building, reviewing, or fixing interfaces, including pages, components, design systems, accessibility, interaction, responsive layout, typography, color, charts, and stack-specific UI implementation.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
