Refresh workshop content for current Copilot CLI behavior - #10
Merged
Conversation
Revalidate all 13 modules and slide decks against the installed CLI and correct every place the content contradicted observed behavior. Fixes that previously broke exercises: - Custom agents load from ~/.copilot/agents/, not ~/.config/copilot/agents/ (11 occurrences). Module 8 Exercise 5 produced an agent that never loaded. - Repository hooks require the workspace folder to be trusted; without it the hooks exercises silently produced nothing. Personal hooks in ~/.copilot/hooks/ fire regardless of trust. - Replace the fabricated lsp.json schema with the real ~/.copilot/lsp-config.json (fileExtensions is a map of extension to language ID, not an array). - Remove COPILOT_DEBUG, ~/.copilot/sessions/ and ~/.copilot/auth*, none of which exist; session data lives under ~/.copilot/session-state/. - Drop the configure-copilot sub-agent, the "Critic Agent" section and /limits predict, none of which exist. - copilot plugin update requires an argument or --all. - /theme has no show/set/list subcommands; theme is set via /settings theme. - /rewind and /undo are one aliased command, not two. - Repair six nested code fences in module 8 that truncated four heredocs, causing learners to write incomplete .agent.md files. Security: - Stop instructing learners to print ~/.copilot/config.json, which holds a live auth token. Point user settings at ~/.copilot/settings.json and warn against sharing config.json. Content rebuilt from the live CLI: - Built-in tools, built-in agents and built-in skills tables. - All 15 hook events and the two mutually exclusive payload shapes. - Settings keys, environment variables, startup flags and help topics. - Command sandboxing, session limits and AI credits, the copilot plugins command family, and /mcp, /session and /permissions subcommands. Also correct invalid Actions YAML, Python and JavaScript samples, split mixed shell/slash-command fences so they are safe to copy, move the closing slide from deck 12 to deck 13, and resync all 13 slide decks and the landing page. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9b5018e7-0abd-4333-814a-aa77e87e3625
Switch from a bare image to a Dockerfile build so package registry endpoints can be supplied at build time via NPM_CONFIG_REGISTRY, PIP_INDEX_URL and RestoreSources, each defaulting to the public registry when unset. Add a devcontainer lock file pinning every feature to a digest, pin the node feature to 2.1.0, and add the copilot-persistence, tmux and glow features. Remove the unused Dockerfile.opt, whose tooling is now provided by devcontainer features. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9b5018e7-0abd-4333-814a-aa77e87e3625
jamesmontemagno
approved these changes
Aug 7, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Revalidates all 13 workshop modules, all 13 slide decks, and the landing page against the installed Copilot CLI, and bumps
VALIDATED_CLI_VERSIONfrom1.0.69-1to1.0.79-5.An accuracy audit compared every documented command, path, flag, config key, and schema against the running CLI. It found 21 confirmed inaccuracies and 14 undocumented capabilities. All were applied, then four validators (cross-reference, slide-sync, exercise-lint, landing-page) audited the result and their findings were fixed too.
Exercises that were broken
~/.config/copilot/agents/~/.copilot/agents/(11 occurrences).~/.copilot/hooks/fire regardless of trust.cat > ... << 'EOF'heredocs were truncated, so learners wrote incomplete.agent.mdfiles. All five heredocs now execute end to end.lsp.jsonschema was fabricated~/.copilot/lsp-config.json;fileExtensionsis a map of extension to language ID, not an array.COPILOT_DEBUG,~/.copilot/sessions/,~/.copilot/auth*~/.copilot/session-state/.configure-copilotsub-agent, "Critic Agent",/limits predictcopilot plugin updatewith no argument--all./theme show|set|list/settings theme <value>./undoand/rewindtaught as two commandsSecurity
Exercises previously instructed participants to print
~/.copilot/config.json, which holds a live auth token — a real risk in a screen-shared workshop. Those steps are replaced with a key-scoped read, user settings are pointed at~/.copilot/settings.json, and warnings were added to modules 04, 08, 10, 12 and 13.Rebuilt from the live CLI
Built-in tools, agents and skills tables · all 15 hook events and the two mutually exclusive payload shapes · settings keys, environment variables, startup flags and help topics · command sandboxing, session limits and AI credits, the
copilot pluginsfamily, and the/mcp,/sessionand/permissionssubcommands.Also fixes invalid GitHub Actions YAML, Python and JavaScript samples, splits mixed shell/slash-command fences so they are safe to copy-paste, and moves the closing slide from deck 12 to deck 13 (it previously told the room the workshop was over one module early).
Validation
Documentation remains versionless per the repo convention; the only version references are the deliberate
VALIDATED_CLI_VERSIONstamp and its derived README badge and landing-page stat.The second commit is unrelated devcontainer work: building from a Dockerfile so registry endpoints can be injected at build time, a lock file pinning features to digests, and the
copilot-persistence,tmuxandglowfeatures.