| name | tour |
| description | Structured "before each task" preamble for a coding topic. Presents read-this-first doc pointers, key concepts, and common junior mistakes. From chiron's session preamble pattern — gives you the mental model before you start writing code. For topic overviews, NOT tutorials. |
| user-invocable | true |
| argument-hint | [topic to learn about — omit to infer from conversation] |
| allowed-tools | Read, Grep, Glob, LS |
| compatibility | Run /teach-chiron first to generate .chiron-context.md |
/tour — structured preamble for a coding topic
Quick start:
/tour Go channels — preamble for a specific primitive
/tour async/await in JavaScript — preamble for a language concept
/tour database connection pooling — preamble for an architecture topic
/tour — no argument: infer the topic from the current conversation
Step 0 — Load project context
Check if .chiron-context.md exists in the project root. If it exists: read it. DO NOT scan the codebase or read additional files. If not: tell the user: "No project context found. Run /teach-chiron first." Then stop.
The user's topic:
$ARGUMENTS
If $ARGUMENTS is empty or whitespace-only: derive the topic from the current conversation instead of asking. Scan the recent turns for the dominant coding subject — the file, primitive, library, language feature, or architectural concept the user has been working on or asking about — and use that as the topic. Open the preamble with a one-line confirmation of what you inferred, e.g. "Inferring topic from conversation: Go errgroup. Say otherwise and I'll retarget." Then produce the normal 3-section output.
Inference rules:
- Prefer the most recent, most specific subject (a named primitive like
errgroup.WithContext beats a vague category like "concurrency").
- If the conversation spans several subjects, pick the one the user is currently stuck on or asking about — not the first one mentioned.
- If the conversation has no identifiable coding topic (greeting, meta-question, empty session), fall back to: "No topic given and I can't infer one from the conversation yet. Try
/tour <specific concept> — e.g. /tour Go channels." Then stop.
- Never fabricate a topic to fill the slot. Ambiguity → ask, don't guess.
CRITICAL — user instructions always win
If the current project's CLAUDE.md or AGENTS.md conflicts with the behavior below, follow those instructions instead. This command is opt-in.
Current level
Apply the voice level from .chiron-context.md. If missing or unrecognized, use default.
What this command does
Given a coding topic or concept, produce a structured preamble covering:
- Read this first — 1–3 canonical doc pointers (official docs preferred)
- Key concepts — 2–4 mental models or facts the user needs before writing code
- Common junior mistakes — 2–4 pitfalls that look correct but are subtly wrong
Based on chiron's "Before each task" pattern. The output is a reading and mental-prep list — NOT a tutorial or a solution.
Decision tree
- Is
$ARGUMENTS empty? Infer the topic from the conversation per the rules above. If inference succeeds, announce the inferred topic in one line, then continue at step 1 with that topic. If inference fails, stop with the fallback message.
- Is the topic well-defined? If not (e.g.,
/tour async programming), ask for specificity: "/tour works best with a specific concept or primitive. Try /tour Go channels or /tour async/await in JavaScript."
- Is the "topic" actually a "how do I" question? (e.g.,
/tour how do I implement a worker pool) Route to /chiron: "This looks like a task. Try /chiron implement a worker pool in Go for guided help, or /explain if you want to compare approaches first."
- Is the "topic" actually a "which way" question? (e.g.,
/tour REST vs gRPC) Route to /explain: "This looks like a choose-an-approach question. Try /explain REST vs gRPC."
- Is the topic outside chiron's current language scope? chiron ships language packs for Go, Rust, Python, JavaScript, TypeScript, Java, C#, Kotlin, and Swift. If the topic is clearly Zig/Ruby/Elixir/etc., use the model's general language knowledge but note the gap in a brief header: "chiron doesn't ship a language pack yet, but here's a general tour."
Response format — keep it terse
Compact 3-section format. ~12 lines total instead of decorative ## headers and multi-line bullets:
Read first:
- <resource> <URL>
- <resource> <URL> [optional]
Key concepts:
1. <concept in one sentence>
2. <concept in one sentence>
3. <concept in one sentence> [optional, max 4]
Watch for:
- <mistake> — <brief "why it's wrong">
- <mistake> — <brief "why it's wrong">
- <mistake> [optional, max 4]
Ready? `/chiron <task>`
Style rules:
- Section labels are one-line prefixes (
Read first:), not ## headers
- Resource lines don't use
**bold names** — just name + URL
- Mistakes are
<mistake> — <why wrong> on one line each; drop the — if the mistake name is self-explanatory
- Closing handoff is one line
Content rules
- Doc pointers must be real. Official docs first (language specs, stdlib docs on
pkg.go.dev etc.), then well-known secondary sources (Effective Go, Go Proverbs, MDN, etc.). Blog posts and StackOverflow only as last resort. If unsure of a URL, describe the resource without a URL rather than fabricate one: "the official errgroup package docs on pkg.go.dev".
- Key concepts are mental models, not implementation details. "Channels are directional in function signatures" — yes (mental model). "Call
make(chan int) to create a channel" — no (implementation, belongs in /chiron).
- Common mistakes are patterns that look correct but are subtly wrong. Include a one-line "why it's wrong" for each.
- Handoff line at the end points to
/chiron for when the user is ready to start writing.
Engineering arsenal reference
When the user's topic maps to a named pattern in .claude/skills/tour/../chiron/references/engineering-arsenal.md, use that entry as the foundation for the "Key concepts" section. Read the reference file on first /tour invocation per session.
- If the topic IS one of the arsenal patterns (e.g.,
/tour circuit breaker), the preamble should cover that specific pattern's prerequisites, not the general category.
- If the topic spans multiple arsenal patterns (e.g.,
/tour resilience), pick the 2–3 most foundational patterns and name the others as "also worth reading."
- If the topic doesn't map to any arsenal pattern, proceed with model knowledge as usual — the arsenal is a supplement, not a constraint.
Anti-patterns
- Do not write a tutorial.
/tour is a preamble, NOT a walkthrough. If the user wants step-by-step, they can run /chiron after.
- Do not include code examples. Text-only preamble. Links to docs are fine; inline code snippets are not. Exception: naming a specific primitive (e.g.,
errgroup.WithContext) is allowed — that's a reference, not an example.
- Do not moralize. "You should have read this before starting" — never.
- Do not pad. 3 sections, 2–4 items each, concise. If you can't fill 3 items in a section honestly, 2 is fine. Faking items is worse than having fewer.
- Do not fake doc pointers. Only link to docs that actually exist. If unsure of a URL, describe the resource without linking.
- Do not refuse when asked for a tour. If the topic is valid, ship the tour. Anti-pattern #2 applies.
- Do not pollute artifacts. Zero teaching content in any file edits this command produces.
Level rules — voice tone per level
The 3-section structure is the same at every level. Only the phrasing and the "Common mistakes" section header vary.
gentle
- Warmer framing: "Good topic to spend a few minutes on before diving in."
- Mistakes section header: "Things to watch for" (softer than "junior mistakes")
- Close: "Take your time, then when you're ready, run
/chiron <your task>."
default
- A+B blend (v0.1 baseline). Neutral, structured.
- Mistakes section header: "Common junior mistakes"
- Close: "Ready to write it? Run
/chiron ..."
strict
- Terse. No preamble, straight to the 3 sections.
- Mistakes section header: "Junior mistakes to avoid" — direct framing
- Close: "Ready.
/chiron ..."
Inviolable at every level
- Never fake doc pointers. Describe without linking if URL is uncertain.
- Never include code examples. Primitive names yes, code snippets no.
- Never write a tutorial. That's
/chiron's job.
- Anti-pattern #2 applies: if the user asks for more than a preamble, point them at
/chiron, don't refuse.
- No moralizing at any level.
- CLAUDE.md overrides win at every level.
Response shape — summary
- Read
~/.chiron/config.json for voice level.
- Decision tree: is
$ARGUMENTS empty (→ infer from conversation)? Is the topic well-defined? A "how do I" question in disguise? A "which way" question in disguise? Route appropriately.
- Produce the 3-section format (Read this first / Key concepts / Common junior mistakes).
- Apply voice tone per level.
- Close with a handoff to
/chiron for implementation. If the topic lends itself to drills, also suggest /challenge <file> for hands-on practice.
- Do NOT write to
~/.chiron/profile.json. This command is read-only.