Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/agents/core.agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ Switch back to the core track. Do the following steps in order:

1. Read the file `tutorial/state.json`
2. Set the `track` field to `"core"`
3. If `currentLesson` is greater than 20, set `currentLesson` to 20
3. If `currentLesson` is greater than 21, set `currentLesson` to 21
4. Write the updated JSON back to `tutorial/state.json`
5. Determine the lesson filename: look in `tutorial/lessons/` for the file whose name starts with the zero-padded lesson number (e.g., lesson 20 becomes "20-")
5. Determine the lesson filename: look in `tutorial/lessons/` for the file whose name starts with the zero-padded lesson number (e.g., lesson 21 becomes "21-")
6. Read that lesson file
7. Present its contents to the user. Mention that they've switched back to the core track.
6 changes: 3 additions & 3 deletions .github/agents/design.agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@ description: "Switch to the Design track"
tools: ["read", "edit"]
---

Switch to the Design track (lessons 26-31). Do the following steps in order:
Switch to the Design track (lessons 27-32). Do the following steps in order:

1. Read the file `tutorial/state.json`
2. Set the `track` field to `"design"`
3. If `currentLesson` is less than 26, set `currentLesson` to 26 (otherwise keep it as-is)
3. If `currentLesson` is less than 27, set `currentLesson` to 27 (otherwise keep it as-is)
4. Write the updated JSON back to `tutorial/state.json`
5. Determine the lesson filename: look in `tutorial/lessons/` for the file whose name starts with the zero-padded lesson number (e.g., lesson 26 becomes "26-")
5. Determine the lesson filename: look in `tutorial/lessons/` for the file whose name starts with the zero-padded lesson number (e.g., lesson 27 becomes "27-")
6. Read that lesson file
7. Present its contents to the user. Mention that they've switched to the Design track. If the lesson has an Exercise section, make it visually distinct so the user knows exactly what to do next.
2 changes: 1 addition & 1 deletion .github/agents/next.agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ Advance the tutorial to the next lesson. Do the following steps in order:
2. Get the current lesson number from the `currentLesson` field
3. Add the current lesson number to the `completedLessons` array if it is not already there
4. Increment `currentLesson` by 1
5. Read the `track` field from state (default `"core"` if missing). If `track` is `"qa"`, cap `currentLesson` at 25. If `track` is `"design"`, cap at 31. If `track` is `"core"`, cap at 20. (Set it back to the cap value if it exceeds it.)
5. Read the `track` field from state (default `"core"` if missing). If `track` is `"qa"`, cap `currentLesson` at 26. If `track` is `"design"`, cap at 32. If `track` is `"core"`, cap at 21. (Set it back to the cap value if it exceeds it.)
6. Write the updated JSON back to `tutorial/state.json`
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-")
8. Read that lesson file
Expand Down
31 changes: 16 additions & 15 deletions .github/agents/progress.agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,10 @@ Show the user their tutorial progress. Do the following:
- 14: Session Management
- 16: Model Selection & Configuration
- 17: CLI Tools & MCP Servers
- 18: Working with Images
- 19: Premium Requests
- 20: Graduation + Bonus
- 18: LSP Servers
- 19: Working with Images
- 20: Premium Requests
- 21: Graduation + Bonus

**Developer:**
- 5: Code Modification
Expand All @@ -35,19 +36,19 @@ Show the user their tutorial progress. Do the following:
- 15: Programmatic Mode & Automation

4. If `track` is `"qa"`, also show a **QA Track:** section:
- 21: Test Planning from Requirements
- 22: Test Case Design & Coverage Analysis
- 23: Automated Test Generation
- 24: E2E Testing with Playwright
- 25: QA Track Graduation
- 22: Test Planning from Requirements
- 23: Test Case Design & Coverage Analysis
- 24: Automated Test Generation
- 25: E2E Testing with Playwright
- 26: QA Track Graduation

If `track` is `"design"`, also show a **Design Track:** section:
- 26: Translating Mockups to Specs
- 27: Accessibility & Design Review
- 28: Design System Instructions
- 29: Designer ↔ Developer Handoff
- 30: Rapid Prototyping
- 31: Design Track Graduation
- 27: Translating Mockups to Specs
- 28: Accessibility & Design Review
- 29: Design System Instructions
- 30: Designer ↔ Developer Handoff
- 31: Rapid Prototyping
- 32: Design Track Graduation

If `track` is NOT `"qa"` and NOT `"design"`, show a note instead: "Type /agent qa to start the QA track or /agent design to start the Design track"

Expand All @@ -56,4 +57,4 @@ Show the user their tutorial progress. Do the following:
- `[>]` if it is the `currentLesson` (the one they're on right now)
- `[~]` if it is in the `skippedLessons` array
- `[ ]` if it hasn't been reached yet
6. Show a summary line. If on the core track: "Progress: N of 20 lessons completed". If on the QA track: "Progress: N of 5 lessons completed". If on the design track: "Progress: N of 6 lessons completed".
6. Show a summary line. If on the core track: "Progress: N of 21 lessons completed". If on the QA track: "Progress: N of 5 lessons completed". If on the design track: "Progress: N of 6 lessons completed".
6 changes: 3 additions & 3 deletions .github/agents/qa.agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@ description: "Switch to the QA track"
tools: ["read", "edit"]
---

Switch to the QA track (lessons 21-25). Do the following steps in order:
Switch to the QA track (lessons 22-26). Do the following steps in order:

1. Read the file `tutorial/state.json`
2. Set the `track` field to `"qa"`
3. If `currentLesson` is less than 21, set `currentLesson` to 21 (otherwise keep it as-is)
3. If `currentLesson` is less than 22, set `currentLesson` to 22 (otherwise keep it as-is)
4. Write the updated JSON back to `tutorial/state.json`
5. Determine the lesson filename: look in `tutorial/lessons/` for the file whose name starts with the zero-padded lesson number (e.g., lesson 21 becomes "21-")
5. Determine the lesson filename: look in `tutorial/lessons/` for the file whose name starts with the zero-padded lesson number (e.g., lesson 22 becomes "22-")
6. Read that lesson file
7. Present its contents to the user. Mention that they've switched to the QA track. If the lesson has an Exercise section, make it visually distinct so the user knows exactly what to do next.
2 changes: 1 addition & 1 deletion .github/agents/skip.agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Skip the current exercise and move to the next lesson. Do the following steps:

1. Read `tutorial/state.json`
2. Add the current lesson number to the `skippedLessons` array if not already there
3. Increment `currentLesson` by 1. Read the `track` field (default `"core"` if missing). Cap at 31 if `track` is `"design"`, at 25 if `track` is `"qa"`, or at 20 if `track` is `"core"`.
3. Increment `currentLesson` by 1. Read the `track` field (default `"core"` if missing). Cap at 32 if `track` is `"design"`, at 26 if `track` is `"qa"`, or at 21 if `track` is `"core"`.
4. Write the updated state back to `tutorial/state.json`
5. Read the next lesson file from `tutorial/lessons/` (zero-padded prefix)
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.
45 changes: 18 additions & 27 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ You are running as an interactive tutorial guide for GitHub Copilot CLI. Your jo
| `hint` | Get a hint for the current exercise |
| `skip` | Skip the current exercise |
| `progress` | See tutorial progress |
| `qa` | Switch to the QA track (lessons 21-25) |
| `design` | Switch to the Design track (lessons 26-31) |
| `qa` | Switch to the QA track (lessons 22-26) |
| `design` | Switch to the Design track (lessons 27-32) |
| `core` | Switch back to the core track |

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.
Expand Down Expand Up @@ -86,43 +86,34 @@ The tutorial frequently edits `tutorial/state.json` for navigation. If the user

The tutorial includes optional specialist tracks for QA engineers and designers. It is controlled by the `track` field in `tutorial/state.json`:

- `"core"` (default) — Lessons 0-20, the standard developer-focused track
- `"qa"` — Lessons 21-25, focused on QA workflows
- `"design"` — Lessons 26-31, focused on design workflows
- `"core"` (default) — Lessons 0-21, the standard developer-focused track
- `"qa"` — Lessons 22-26, focused on QA workflows
- `"design"` — Lessons 27-32, focused on design workflows

### Track Navigation

| Say this | Or type this | What it does |
|----------|-------------|-------------|
| "switch to QA track" | `/agent qa` | Switch to the QA track (starts at lesson 21) |
| "switch to Design track" | `/agent design` | Switch to the Design track (starts at lesson 26) |
| "switch to QA track" | `/agent qa` | Switch to the QA track (starts at lesson 22) |
| "switch to Design track" | `/agent design` | Switch to the Design track (starts at lesson 27) |
| "switch to core track" | `/agent core` | Switch back to the core track |

### QA Lessons

- **21: Test Planning from Requirements** — Analyse a feature request and create a structured test plan
- **22: Test Case Design & Coverage** — Identify coverage gaps and design test cases using QA techniques
- **23: Automated Test Generation** — Turn test cases into running Vitest tests
- **24: E2E Testing with Playwright** — Write Playwright tests for the web UI
- **25: QA Track Graduation** — Recap and bonus challenges
- **22: Test Planning from Requirements** — Analyse a feature request and create a structured test plan
- **23: Test Case Design & Coverage** — Identify coverage gaps and design test cases using QA techniques
- **24: Automated Test Generation** — Turn test cases into running Vitest tests
- **25: E2E Testing with Playwright** — Write Playwright tests for the web UI
- **26: QA Track Graduation** — Recap and bonus challenges

### Design Lessons

- **26: Translating Mockups to Specs** — Use Copilot to turn a visual design into a structured implementation spec
- **27: Accessibility & Design Review** — Audit a UI against WCAG 2.1 AA and create a reusable `a11y` agent
- **28: Design System Instructions** — Encode design system conventions in `copilot-instructions.md` so Copilot enforces them automatically
- **29: Designer ↔ Developer Handoff** — Use the "interview me" pattern to produce a developer-ready handoff spec
- **30: Rapid Prototyping** — Generate a working, interactive HTML prototype from the handoff spec in the same session
- **31: Design Track Graduation** — Recap and bonus challenges

### Design Lessons

- **25: Translating Mockups to Specs** — Use Copilot to turn a visual design into a structured implementation spec
- **26: Accessibility & Design Review** — Audit a UI against WCAG 2.1 AA and create a reusable `a11y` agent
- **27: Design System Instructions** — Encode design system conventions in `copilot-instructions.md` so Copilot enforces them automatically
- **28: Designer ↔ Developer Handoff** — Use the "interview me" pattern to produce a developer-ready handoff spec
- **29: Rapid Prototyping** — Generate a working, interactive HTML prototype from the handoff spec in the same session
- **30: Design Track Graduation** — Recap and bonus challenges
- **27: Translating Mockups to Specs** — Use Copilot to turn a visual design into a structured implementation spec
- **28: Accessibility & Design Review** — Audit a UI against WCAG 2.1 AA and create a reusable `a11y` agent
- **29: Design System Instructions** — Encode design system conventions in `copilot-instructions.md` so Copilot enforces them automatically
- **30: Designer ↔ Developer Handoff** — Use the "interview me" pattern to produce a developer-ready handoff spec
- **31: Rapid Prototyping** — Generate a working, interactive HTML prototype from the handoff spec in the same session
- **32: Design Track Graduation** — Recap and bonus challenges

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.

Expand Down
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ You can navigate the tutorial using natural language or the `/agent` command:
| "hint" or "give me a hint" | `/agent hint` | Get a hint for the current exercise |
| "skip" or "skip this" | `/agent skip` | Skip the current exercise |
| "progress" or "show progress" | `/agent progress` | See your tutorial progress |
| "switch to QA track" | `/agent qa` | Switch to the QA track (lessons 21-25) |
| "switch to Design track" | `/agent design` | Switch to the Design track (lessons 26-31) |
| "switch to QA track" | `/agent qa` | Switch to the QA track (lessons 22-26) |
| "switch to Design track" | `/agent design` | Switch to the Design track (lessons 27-32) |
| "switch to core track" | `/agent core` | Switch back to the core track |

## Specialist Tracks
Expand All @@ -41,13 +41,13 @@ The tutorial includes two optional specialist tracks.

### QA Track

The QA track (lessons 21-25) is for QA engineers. It covers test planning, test case design, automated test generation, and E2E testing with Playwright.
The QA track (lessons 22-26) is for QA engineers. It covers test planning, test case design, automated test generation, and E2E testing with Playwright.

To start the QA track, say "switch to QA track" or type `/agent qa`.

### Design Track

The Design track (lessons 26-31) is for designers and frontend developers. It covers translating mockups, accessibility reviews, design system instructions, designer-developer handoff, and rapid prototyping.
The Design track (lessons 27-32) is for designers and frontend developers. It covers translating mockups, accessibility reviews, design system instructions, designer-developer handoff, and rapid prototyping.

To start the Design track, say "switch to Design track" or type `/agent design`.

Expand Down
9 changes: 5 additions & 4 deletions tutorial/lessons/00-welcome.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,10 @@ You can also use `/agent` and select from the list of tutorial agents.
15. **Programmatic Mode** — Run Copilot from scripts and CI/CD
16. **Model Selection** — Choose the right model for each task
17. **CLI Tools & MCP Servers** — Use any CLI tool and structured tool access
18. **Working with Images** — Debug from screenshots and mockups
19. **Premium Requests** — How Copilot billing works and what consumes your allowance
20. **Graduation** — Bonus challenges and where to go next
18. **LSP Servers** — Set up language servers for precise code intelligence
19. **Working with Images** — Debug from screenshots and mockups
20. **Premium Requests** — How Copilot billing works and what consumes your allowance
21. **Graduation** — Bonus challenges and where to go next

## Coming from IDE Copilots?

Expand All @@ -46,7 +47,7 @@ If you've used GitHub Copilot in VS Code, JetBrains, or other editors, here's ho
- **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.
- **Persistent memory** — `.github/copilot-instructions.md` files store your conventions, architecture decisions, and rules. Copilot reads them every session — no re-explaining.
- **Three interaction modes** — **Shift+Tab** cycles between Normal (confirm each edit), Autopilot (apply without asking), and Plan (explore without changing anything). You control how much autonomy Copilot has at any point.
- **Works with images** — drag-and-drop screenshots, mockups, or error dialogs directly into the conversation (details in Lesson 17).
- **Works with images** — drag-and-drop screenshots, mockups, or error dialogs directly into the conversation (details in Lesson 19).
- **Multiple models** — Switch between models with the `/model` command mid-session.

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.
Expand Down
Loading