Skip to content
AI & Agents
Skill

/code-tour

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",

From plugin
awesome-copilot
39k200 skills200 agents
Install
$ npx -y skills add github/awesome-copilot --skill code-tour --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/code-tour

Context preview

The summary Claude sees to decide when to auto-load this skill.

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",

SKILL.md

code-tour.SKILL.md
name: 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](https://github.com/microsoft/codetour).

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, changel

Read more
Ships withawesome-copilot

A community-created collection of custom agents, instructions, skills, hooks, workflows, and plugins to supercharge your GitHub Copilot experience.

Get the whole plugin

Other skills on awesome-copilot.