Skip to content

Refresh workshop content for current Copilot CLI behavior - #10

Merged
jamesmontemagno merged 2 commits into
mainfrom
refresh/cli-v1.0.79-5
Aug 7, 2026
Merged

Refresh workshop content for current Copilot CLI behavior#10
jamesmontemagno merged 2 commits into
mainfrom
refresh/cli-v1.0.79-5

Conversation

@jsburckhardt

Copy link
Copy Markdown
Collaborator

Revalidates all 13 workshop modules, all 13 slide decks, and the landing page against the installed Copilot CLI, and bumps VALIDATED_CLI_VERSION from 1.0.69-1 to 1.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

Problem Effect on a participant
Custom agents documented at ~/.config/copilot/agents/ Wrong path. Module 8 Exercise 5 produced an agent that was never loaded. Fixed to ~/.copilot/agents/ (11 occurrences).
Folder trust requirement for repository hooks undocumented Every hooks exercise silently produced nothing, with no error to debug. Verified empirically that personal hooks in ~/.copilot/hooks/ fire regardless of trust.
Six nested code fences in module 8 terminated early Four cat > ... << 'EOF' heredocs were truncated, so learners wrote incomplete .agent.md files. All five heredocs now execute end to end.
lsp.json schema was fabricated Replaced with the real ~/.copilot/lsp-config.json; fileExtensions is a map of extension to language ID, not an array.
COPILOT_DEBUG, ~/.copilot/sessions/, ~/.copilot/auth* None exist. Session data lives under ~/.copilot/session-state/.
configure-copilot sub-agent, "Critic Agent", /limits predict None exist. Removed.
copilot plugin update with no argument Fails. Now documents an argument or --all.
/theme show|set|list No such subcommands. Theme is set via /settings theme <value>.
/undo and /rewind taught as two commands They are one aliased command.

Security

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 plugins family, and the /mcp, /session and /permissions subcommands.

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

Check Result
Cross-reference (links, anchors, structure, agent maps) 0 issues
Exercise lint (bash, JSON, numbering, references) 0 issues
Slide sync across 13 decks 0 desyncs
Fence balance / table integrity across 27 files 0 issues
JSON samples 34/34 parse
Heredocs 30/30 parse
Marp render 13/13 decks

Documentation remains versionless per the repo convention; the only version references are the deliberate VALIDATED_CLI_VERSION stamp 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, tmux and glow features.

jsburckhardt and others added 2 commits August 6, 2026 11:02
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
jamesmontemagno merged commit 448116d into main Aug 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants