Start today: http://github.github.com/copilot-sdk-workshop/
Choose one of two hands-on GitHub Copilot SDK workshops in .NET, Node.js/TypeScript, Python, Go, Rust, or Java:
- Accessibility Reviewer: build an SDLC developer tool that inspects a web page, consults application-owned WCAG guidance, and produces an evidence-based report.
- Museum Exhibit Studio: build a non-SDLC curator that transforms educator-approved facts into visitor-ready exhibit copy behind deterministic application boundaries.
Across the workshops, you'll:
- Create a Copilot client and conversation session.
- Separate durable agent policy from task-specific data.
- Choose between local tools, MCP tools, and a tightly scoped single-tool allowlist.
- Enforce capability, input, timeout, validation, and lifecycle boundaries in application code.
- Explain what the model can infer and what the application must prove.
Plan on about 90 minutes for Accessibility Reviewer or 90 minutes for Museum Exhibit Studio. Machine setup happens separately in an untimed preflight for each workshop.
Open the GitHub Pages URL produced by the repository's Deploy to GitHub Pages workflow. Choose a workshop outcome, choose a language, then start the selected workshop. The site derives its Pages base URL at runtime, so there is no hardcoded organization or user Pages hostname.
To preview the site from a clone:
git clone https://github.com/github/copilot-sdk-workshop.git
cd copilot-sdk-workshop
python3 -m http.server 8000Open http://localhost:8000/docs/. Do not open step.html with a file:// URL; browsers block
the Markdown requests used by the lesson viewer.
- .NET 10 SDK
- Node.js 22 or newer
- Python 3.11 or newer
- Go 1.24 or newer
- Rust 1.94 or newer
- Java 17 or newer
- GitHub Copilot CLI
- GitHub Copilot subscription or trial
- Microsoft Edge (the workshop default) or Google Chrome
Preflight walks through installation checks, authentication, OS-specific commands, expected output, and troubleshooting.
copilot-sdk-workshop/
|-- docs/ GitHub Pages site and controlled target page
|-- workshop/ Two complete workshop tracks and optional extensions
|-- start-accessibility/ Accessibility Reviewer starters in all six languages
|-- start-museum/ Museum Exhibit Studio starters in all six languages
|-- finished/dotnet/
| |-- hello-copilot-sdk/ Completed local-tool example in every language
| |-- accessibility-report/ Completed .NET local + MCP reporter
| `-- museum-exhibit-studio/ Grounded museum curator sample, one application-owned tool
|-- finished/nodejs/ Completed TypeScript projects
|-- finished/python/ Completed Python projects
|-- finished/go/ Completed Go projects
|-- finished/rust/ Completed Rust projects
|-- finished/java/ Completed Maven Java projects
|-- src/BlazorApp/ Source counterpart of the deployed target
|-- scripts/ Deterministic content and build validation
`-- .github/workflows/ Validation and Pages deployment
bash scripts/validate-workshop.shThe command checks lesson structure, internal links, site behavior hooks, and project coverage. It then runs browser-independent language-selection tests and restores, builds, or syntax-checks every accessibility and museum starter, every finished project, and the Blazor target without authenticating Copilot, launching a browser, or sending a prompt. The museum projects ship no tests, mocks, or fixtures, so their targets only restore and build.
Pass a language ID to run one smoke-build target:
bash scripts/validate-workshop.sh nodejsPull requests run content validation and all six language smoke builds as separate GitHub Actions jobs, so a failure identifies the affected SDK track.
Museum Exhibit Studio starters live under start-museum/<language>, with completed references under
finished/<language>/museum-exhibit-studio. Each starter ships one pre-built curator helper module
that learners never edit: approved fact sets and their bounds, a streaming printer, deterministic
exhibit validation, the scoped Wikipedia MCP server with its deny-by-default permission handler, the
single-file exhibit.html write permission, and small terminal prompts.
Learners work directly in start-museum/<language> and grow that one project across the
lessons, running it at every step. They write only the session setup, the curator and research
system messages, the prompt builders, one session runner that owns the lifecycle and guardrails, and
main. The finished sample is what a learner ends up with, not a separate reference architecture.
The learner-facing track begins at
workshop/museum-00-preflight.md, then runs through seven core
steps — first session, streaming, curator voice, approved facts, guardrails, structural checks, and
Wikipedia MCP research — plus an optional interactive exhibit.html capstone.
Rust checks share one Cargo target directory across all workshop projects, avoiding repeated SDK dependency compilation.
After validation passes, push to main. The
Pages workflow publishes docs/ plus the Markdown lessons in
workshop/. Build and content validation run separately in the validation workflow.
Enable GitHub Pages in repository settings and choose GitHub Actions as the source. The deployment job reports the canonical workshop URL in its environment.
The deployment workflow verifies every published HTML page, site asset, and Markdown lesson. It
checks the URL returned by GitHub Pages by default. To validate a future public or custom domain
instead, set the repository Actions variable WORKSHOP_SITE_URL to that site's base URL. You can
run the same check manually:
WORKSHOP_SITE_URL=https://workshop.example.com/ python3 scripts/validate_deployment.py- GitHub Copilot SDK for .NET
- GitHub Copilot SDK for Node.js/TypeScript
- GitHub Copilot SDK for Python
- GitHub Copilot SDK for Go
- GitHub Copilot SDK for Rust
- GitHub Copilot SDK for Java
- Copilot SDK cookbook
- Copilot SDK API and source
- Install the GitHub Copilot CLI
- Playwright MCP
- Model Context Protocol
This project is licensed under the MIT License.
This workshop is provided as-is for educational purposes. It is intended to demonstrate concepts and patterns rather than serve as a complete production service.