You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Split Lesson 3 into Context (L3) and Custom Instructions (L4)
Lesson 3 covered too much ground. Split it into two focused lessons:
- Lesson 3: Context — how Copilot finds context, @file mentions,
managing the context window (/clear, /compact, /context), anti-patterns
- Lesson 4: Custom Instructions — copilot-instructions.md, AGENTS.md,
the golden rule, resist the manual refactor
Renumbered all subsequent lessons (4-22 → 5-23), validators, and updated
every cross-reference across agents, hooks, copilot-instructions.md,
README, and lesson files.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: .github/agents/core.agent.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,7 @@ Switch back to the core track. Do the following steps in order:
7
7
8
8
1. Read the file `tutorial/state.json`
9
9
2. Set the `track` field to `"core"`
10
-
3. If `currentLesson` is greater than 17, set `currentLesson` to 17
10
+
3. If `currentLesson` is greater than 18, set `currentLesson` to 18
11
11
4. Write the updated JSON back to `tutorial/state.json`
12
12
5. Determine the lesson filename: look in `tutorial/lessons/` for the file whose name starts with the zero-padded lesson number (e.g., lesson 17 becomes "17-")
Copy file name to clipboardExpand all lines: .github/agents/next.agent.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,7 +9,7 @@ Advance the tutorial to the next lesson. Do the following steps in order:
9
9
2. Get the current lesson number from the `currentLesson` field
10
10
3. Add the current lesson number to the `completedLessons` array if it is not already there
11
11
4. Increment `currentLesson` by 1
12
-
5. Read the `track` field from state (default `"core"` if missing). If `track` is `"qa"`, cap `currentLesson` at 22. If `track` is `"core"`, cap at 17. (Set it back to the cap value if it exceeds it.)
12
+
5. Read the `track` field from state (default `"core"` if missing). If `track` is `"qa"`, cap `currentLesson` at 23. If `track` is `"core"`, cap at 18. (Set it back to the cap value if it exceeds it.)
13
13
6. Write the updated JSON back to `tutorial/state.json`
14
14
7. Determine the next lesson filename: look in `tutorial/lessons/` for the file whose name starts with the zero-padded lesson number (e.g., lesson 3 becomes "03-", lesson 7 becomes "07-")
Copy file name to clipboardExpand all lines: .github/agents/qa.agent.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,11 +3,11 @@ description: "Switch to the QA track"
3
3
tools: ["read", "edit"]
4
4
---
5
5
6
-
Switch to the QA track (lessons 18-22). Do the following steps in order:
6
+
Switch to the QA track (lessons 19-23). Do the following steps in order:
7
7
8
8
1. Read the file `tutorial/state.json`
9
9
2. Set the `track` field to `"qa"`
10
-
3. If `currentLesson` is less than 18, set `currentLesson` to 18 (otherwise keep it as-is)
10
+
3. If `currentLesson` is less than 19, set `currentLesson` to 19 (otherwise keep it as-is)
11
11
4. Write the updated JSON back to `tutorial/state.json`
12
12
5. Determine the lesson filename: look in `tutorial/lessons/` for the file whose name starts with the zero-padded lesson number (e.g., lesson 18 becomes "18-")
Copy file name to clipboardExpand all lines: .github/agents/skip.agent.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,7 @@ Skip the current exercise and move to the next lesson. Do the following steps:
7
7
8
8
1. Read `tutorial/state.json`
9
9
2. Add the current lesson number to the `skippedLessons` array if not already there
10
-
3. Increment `currentLesson` by 1. Read the `track` field (default `"core"` if missing). Cap at 22 if `track` is `"qa"`, or at 17 if `track` is `"core"`.
10
+
3. Increment `currentLesson` by 1. Read the `track` field (default `"core"` if missing). Cap at 23 if `track` is `"qa"`, or at 18 if `track` is `"core"`.
11
11
4. Write the updated state back to `tutorial/state.json`
12
12
5. Read the next lesson file from `tutorial/lessons/` (zero-padded prefix)
13
13
6. Present it to the user. Briefly acknowledge the skip in a neutral way — something like "Moving on!" — without making the user feel bad. Everyone learns at their own pace.
Copy file name to clipboardExpand all lines: .github/copilot-instructions.md
+10-10Lines changed: 10 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,7 +18,7 @@ You are running as an interactive tutorial guide for GitHub Copilot CLI. Your jo
18
18
|`hint`| Get a hint for the current exercise |
19
19
|`skip`| Skip the current exercise |
20
20
|`progress`| See tutorial progress |
21
-
|`qa`| Switch to the QA track (lessons 18-22) |
21
+
|`qa`| Switch to the QA track (lessons 19-23) |
22
22
|`core`| Switch back to the core track |
23
23
24
24
When suggesting navigation to the user, tell them to type `/agent` and select from the list, or say "next" / "next lesson" / "give me a hint" etc. — you should infer which agent to use from natural language.
@@ -66,26 +66,26 @@ Or, when prompted, they can select **"Yes, approve for session"** to auto-approv
66
66
67
67
8.**Understand natural language navigation.** When the user says things like "next lesson", "go to the next one", "skip this", "give me a hint", "show my progress", "restart", "switch to QA track" — use the corresponding navigation agent. You don't need to wait for a specific `/agent` command.
68
68
69
-
## QA Track (Lessons 18-22)
69
+
## QA Track (Lessons 19-23)
70
70
71
71
The tutorial includes an optional QA track for QA engineers. It is controlled by the `track` field in `tutorial/state.json`:
72
72
73
-
-`"core"` (default) — Lessons 0-17, the standard developer-focused track
74
-
-`"qa"` — Lessons 18-22, focused on QA workflows
73
+
-`"core"` (default) — Lessons 0-18, the standard developer-focused track
74
+
-`"qa"` — Lessons 19-23, focused on QA workflows
75
75
76
76
### QA Track Navigation
77
77
78
78
| Say this | Or type this | What it does |
79
79
|----------|-------------|-------------|
80
-
| "switch to QA track" |`/agent qa`| Switch to the QA track (starts at lesson 18) |
80
+
| "switch to QA track" |`/agent qa`| Switch to the QA track (starts at lesson 19) |
81
81
| "switch to core track" |`/agent core`| Switch back to the core track |
82
82
83
83
### QA Lessons
84
84
85
-
-**18: Test Planning from Requirements** — Analyze a feature request and create a structured test plan
86
-
-**19: Test Case Design & Coverage** — Identify coverage gaps and design test cases using QA techniques
87
-
-**20: Automated Test Generation** — Turn test cases into running Vitest tests
88
-
-**21: E2E Testing with Playwright** — Write Playwright tests for the web UI
89
-
-**22: QA Track Graduation** — Recap and bonus challenges
85
+
-**19: Test Planning from Requirements** — Analyze a feature request and create a structured test plan
86
+
-**20: Test Case Design & Coverage** — Identify coverage gaps and design test cases using QA techniques
87
+
-**21: Automated Test Generation** — Turn test cases into running Vitest tests
88
+
-**22: E2E Testing with Playwright** — Write Playwright tests for the web UI
89
+
-**23: QA Track Graduation** — Recap and bonus challenges
90
90
91
91
The `next`, `skip`, and `progress` agents are track-aware — they respect the active track's lesson range. The hooks work with any lesson number automatically.
Copy file name to clipboardExpand all lines: README.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -52,18 +52,18 @@ You can navigate the tutorial using natural language or the `/agent` command:
52
52
| "hint" or "give me a hint" |`/agent hint`| Get a hint for the current exercise |
53
53
| "skip" or "skip this" |`/agent skip`| Skip the current exercise |
54
54
| "progress" or "show progress" |`/agent progress`| See your tutorial progress |
55
-
| "switch to QA track" |`/agent qa`| Switch to the QA track (lessons 18-22) |
55
+
| "switch to QA track" |`/agent qa`| Switch to the QA track (lessons 19-23) |
56
56
| "switch to core track" |`/agent core`| Switch back to the core track |
57
57
58
58
## QA Track
59
59
60
-
The tutorial includes an optional QA track (lessons 18-22) for QA engineers. It covers test planning, test case design, automated test generation, and E2E testing with Playwright.
60
+
The tutorial includes an optional QA track (lessons 19-23) for QA engineers. It covers test planning, test case design, automated test generation, and E2E testing with Playwright.
61
61
62
62
To start the QA track, say "switch to QA track" or type `/agent qa`.
63
63
64
64
To return to the core track, say "switch to core track" or type `/agent core`.
65
65
66
-
The QA track assumes you have completed at least the core lessons (0-3). The `progress` agent shows both tracks when the QA track is active.
66
+
The QA track assumes you have completed at least the core lessons (0-4). The `progress` agent shows both tracks when the QA track is active.
67
67
68
68
## How It Works
69
69
@@ -73,4 +73,4 @@ The tutorial is built using three Copilot CLI features:
73
73
-**Custom Agents** (`.github/agents/*.agent.md`) — Navigation between lessons
74
74
-**Hooks** (`.github/hooks/`) — State persistence, context injection, and exercise validation
75
75
76
-
Lesson 10 of the tutorial walks through exactly how these pieces compose together.
76
+
Lesson 11 of the tutorial walks through exactly how these pieces compose together.
Copy file name to clipboardExpand all lines: tutorial/lessons/00-welcome.md
+17-16Lines changed: 17 additions & 16 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,21 +18,22 @@ You can also use `/agent` and select from the list of tutorial agents.
18
18
19
19
1.**First Conversation** — Explore a real codebase with Copilot
20
20
2.**Effective Prompting** — Write prompts that get great results on the first try
21
-
3.**Context & Custom Instructions** — Persistent instructions and context management
22
-
4.**Code Modification** — Ask Copilot to write TypeScript code
23
-
5.**Bug Investigation** — Hunt down and fix a real bug
24
-
6.**Planning Mode** — How Copilot plans before it codes
25
-
7.**Writing & Running Tests** — Get Copilot to write and run tests
26
-
8.**Skills & Custom Agents** — Create your own custom agents
27
-
9.**Agent Delegation** — Push work to coding agents and built-in specialists
28
-
10.**Hooks in Action** — The automation that powers this tutorial itself
29
-
11.**Git Workflow** — Commits, PRs, and code review with Copilot
30
-
12.**Session Management** — Resume, compress, and organize your work
31
-
13.**Programmatic Mode** — Run Copilot from scripts and CI/CD
32
-
14.**Model Selection** — Choose the right model for each task
33
-
15.**CLI Tools & MCP Servers** — Use any CLI tool and structured tool access
34
-
16.**Working with Images** — Debug from screenshots and mockups
35
-
17.**Graduation** — Bonus challenges and where to go next
21
+
3.**Context** — How Copilot finds context and how to manage your context window
22
+
4.**Custom Instructions** — Persistent instructions that survive across sessions
23
+
5.**Code Modification** — Ask Copilot to write TypeScript code
24
+
6.**Bug Investigation** — Hunt down and fix a real bug
25
+
7.**Planning Mode** — How Copilot plans before it codes
26
+
8.**Writing & Running Tests** — Get Copilot to write and run tests
27
+
9.**Skills & Custom Agents** — Create your own custom agents
28
+
10.**Agent Delegation** — Push work to coding agents and built-in specialists
29
+
11.**Hooks in Action** — The automation that powers this tutorial itself
30
+
12.**Git Workflow** — Commits, PRs, and code review with Copilot
31
+
13.**Session Management** — Resume, compress, and organize your work
32
+
14.**Programmatic Mode** — Run Copilot from scripts and CI/CD
33
+
15.**Model Selection** — Choose the right model for each task
34
+
16.**CLI Tools & MCP Servers** — Use any CLI tool and structured tool access
35
+
17.**Working with Images** — Debug from screenshots and mockups
36
+
18.**Graduation** — Bonus challenges and where to go next
36
37
37
38
## Coming from IDE Copilots?
38
39
@@ -43,7 +44,7 @@ If you've used GitHub Copilot in VS Code, JetBrains, or other editors, here's ho
43
44
-**Runs commands** — Copilot executes tests, builds, type-checkers, and git commands, then reads the output and reacts. It's not just suggesting code — it's verifying it works.
44
45
-**Persistent memory** — `.github/copilot-instructions.md` files store your conventions, architecture decisions, and rules. Copilot reads them every session — no re-explaining.
45
46
-**Plans before acting** — Plan mode (Shift+Tab) lets Copilot explore and design an approach before writing a single line of code. You review and approve the plan first.
46
-
-**Works with images** — drag-and-drop screenshots, mockups, or error dialogs directly into the conversation (details in Lesson 16).
47
+
-**Works with images** — drag-and-drop screenshots, mockups, or error dialogs directly into the conversation (details in Lesson 17).
47
48
-**Multiple models** — Choose between Claude Sonnet 4.5, Claude Sonnet 4, and GPT-5 with the `/model` command mid-session.
48
49
49
50
None of this replaces what you already know — it builds on it. If you've been using Copilot for inline completions, chat, or code explanations, Copilot CLI handles all of those and more. This tutorial shows you what's different.
0 commit comments