Skip to content

Add Advanced Copilot CLI course to the Learning Hub - #2800

Open
GeekTrainer wants to merge 3 commits into
github:mainfrom
GeekTrainer:geektrainer/advanced-copilot-cli-learning-hub
Open

Add Advanced Copilot CLI course to the Learning Hub#2800
GeekTrainer wants to merge 3 commits into
github:mainfrom
GeekTrainer:geektrainer/advanced-copilot-cli-learning-hub

Conversation

@GeekTrainer

Copy link
Copy Markdown
Contributor

Note

For human review — please do not auto-merge. This PR publishes a new Learning Hub course and its content-sync workflow into github/awesome-copilot.

Summary

Publishes the Advanced Copilot CLI course into the awesome-copilot Learning Hub, mirroring the established copilot-workshops / cli-for-beginners precedent. Three parts: a content-sync agentic workflow, the seeded course mirror, and navigation wiring.

1. Content-sync workflow (new)

Adds .github/workflows/advanced-copilot-cli-sync.md (+ compiled advanced-copilot-cli-sync.lock.yml) — a third sibling to copilot-workshops-sync and cli-for-beginners-sync.

  • Weekly + workflow_dispatch; permissions contents: read, copilot-requests: write.
  • Runs read-only against the now-public github-samples/advanced-copilot-cli and opens incremental PRs to keep the mirror aligned.
  • safe-outputs.staged: true has been removed (flip-to-live): the source repo is public, so real PRs are now allowed. PRs are labelled automated-update, learning-hub, advanced-copilot-cli and are for human review (never auto-merged).
  • The lock file was regenerated with gh aw compile (v0.81.6).

2. Seeded mirror

Deterministically seeded from the pre-reviewed dry-run preview (already transformed: frontmatter, GitHub admonitions preserved, site-absolute image paths, trailing-slash internal links):

  • Course landing learning-hub/advanced-copilot-cli/index.md ("choose your track")
  • Track overview .../multi-stack/index.md
  • Nine module pages .../multi-stack/00-prerequisites.md08-wrap-up.md
  • Five images under website/public/images/learning-hub/advanced-copilot-cli/

3. Navigation wiring

  • website/astro.config.mjs: new "Advanced Copilot CLI" sidebar group (with nested "Multi-stack (AssetTrack)" sub-group) placed after "Copilot Workshops", matching its exact style.
  • website/src/content/docs/learning-hub/index.md: new course entry.

Validation

  • gh aw compile succeeded — lock file committed.
  • npm run website:build (readme + marketplace + website data + astro build) passed; all 11 new pages render and every sidebar slug maps to a real file.
  • Line endings verified LF on all changed files.

Publish the "Advanced Copilot CLI" course into the awesome-copilot
Learning Hub, mirroring the copilot-workshops / cli-for-beginners
precedent.

- Add content-sync agentic workflow
  (.github/workflows/advanced-copilot-cli-sync.md + compiled .lock.yml).
  Runs read-only against the now-public github-samples/advanced-copilot-cli
  and opens PRs for human review. staged:true removed (flip-to-live).
- Seed the mirrored course tree: course landing + multi-stack track
  overview + nine module pages (00-08) under
  website/src/content/docs/learning-hub/advanced-copilot-cli/, plus five
  images under website/public/images/learning-hub/advanced-copilot-cli/.
- Wire navigation: "Advanced Copilot CLI" sidebar group (nested
  "Multi-stack (AssetTrack)") in website/astro.config.mjs after
  "Copilot Workshops", and a course entry in learning-hub/index.md.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot AI balanced review requested due to automatic review settings August 25, 2026 17:39
@github-actions github-actions Bot added new-submission PR adds at least one new contribution website-update PR touches website content or code workflow PR touches workflow automation labels Aug 25, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Publishes the Advanced Copilot CLI course in the Learning Hub and adds weekly upstream synchronization.

Changes:

  • Adds nine course modules and five diagrams.
  • Adds navigation and course discovery.
  • Adds and compiles the synchronization workflow.
Show a summary per file
File Description
.github/aw/actions-lock.json Updates agentic workflow action pins.
.github/workflows/advanced-copilot-cli-sync.md Defines weekly course synchronization.
.github/workflows/advanced-copilot-cli-sync.lock.yml Compiles the synchronization workflow.
website/astro.config.mjs Adds course sidebar navigation.
website/src/content/docs/learning-hub/index.md Links the new course.
website/src/content/docs/learning-hub/advanced-copilot-cli/index.md Adds the course landing page.
website/src/content/docs/learning-hub/advanced-copilot-cli/multi-stack/index.md Adds the module index.
.../multi-stack/00-prerequisites.md Adds environment setup.
.../multi-stack/01-working-with-copilot-cli.md Introduces Copilot CLI fundamentals.
.../multi-stack/02-building-ai-infrastructure.md Covers instructions, agents, and skills.
.../multi-stack/03-test-suite-remote-delegation.md Covers testing and delegation.
.../multi-stack/04-lifecycle-hooks.md Covers lifecycle hooks.
.../multi-stack/05-add-feature-barcode.md Adds the feature-development exercise.
.../multi-stack/06-modernize-apps.md Adds modernization exercises.
.../multi-stack/07-manage-infrastructure.md Covers MCP servers and plugins.
.../multi-stack/08-wrap-up.md Concludes the course.
.../03-test-evidence-loop.png Illustrates the testing feedback loop.
.../03-test-backed-workflow.png Illustrates the test-backed workflow.
.../03-delegation-handoff-flow.png Illustrates delegated work.
.../03-copilot-work-surfaces.png Compares Copilot work surfaces.
.../03-remote-control-flow.png Illustrates remote session control.

Review details

💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Suppressed comments (1)

website/src/content/docs/learning-hub/advanced-copilot-cli/multi-stack/02-building-ai-infrastructure.md:13

  • Correct the misspelling; the repository's codespell check will flag it.
Every time you start a fresh Copilot CLI session, the agent only sees your raw files in the working directory. Without shared instructions, guidlines and codified conventions, you have to keep re-explaining your stacks and re-establishing your coding standards. That repetition makes sessions much slower and produces inconsistent output, so in this module, we build the **AI infrastructure** that makes future interactions with Copilot faster and more accurate.
  • Files reviewed: 15/21 changed files
  • Comments generated: 21
  • Review effort level: Balanced

Comment on lines +23 to +26
"github/gh-aw-actions/setup@v0.81.6": {
"repo": "github/gh-aw-actions/setup",
"version": "v0.84.3",
"sha": "c863074b673419603d146aab585e2986ef08deec"
"version": "v0.81.6",
"sha": "ba6380cc6e5be5d21677bebe04d52fb48e3abec7"
cache-memory: true
safe-outputs:
create-pull-request:
labels: [automated-update, learning-hub, advanced-copilot-cli]
Comment on lines +25 to +26
> [!CAUTION]
> This workflow ships with `safe-outputs.staged: true` set. In staged mode the agent runs normally but **no pull request is opened** — the intended PR is emitted as a run artifact for preview only. This is deliberate while the upstream source repo `github-samples/advanced-copilot-cli` is still internal. **To go live**, remove the `staged: true` line once the source repo is public and the mirror is ready to receive real PRs. See `PUBLISHING.md` in `github-samples/advanced-copilot-cli` for the flip-to-live checklist.
- Supporting assets in `content/images/`
- Any change to module structure, order, or titles

4. If a local mirror **already exists** and **no commits** were found since the last sync, do **not** immediately no-op on the strength of the cached SHA alone. The cached `last_synced_sha` is only advanced optimistically when a PR is opened (see Step 5), so a previously opened sync PR that was later **closed or rejected** can leave the cache pointing at a commit whose content never actually reached `main`. Before short-circuiting, **verify the checked-out mirror is genuinely consistent with the current upstream content** (spot-check that every upstream module and image is present in the mirror and not obviously stale). Only if the mirror both is up to date on SHA **and** matches upstream should you call the `noop` safe output with a message like: "No new commits found in `github-samples/advanced-copilot-cli@main` since last sync (`<last_synced_sha>`), and the local mirror matches upstream. No action needed." If the SHA suggests nothing changed but the mirror is actually missing or stale, proceed to Step 2+ and open a PR anyway so a rejected/closed earlier PR cannot permanently hide the update.
3. Select **Create a new repository**.
4. Under **Owner**, select your personal GitHub account.
5. For **Repository name**, enter `AssetTrack`.
6. Leave the remaining options at their defaults.

1. host the marketplace where the whole organization can reach it,
2. make the plugin install automatically through enterprise-managed plugin standards,
3. and govern org-wide personas through enterprise custom agents.|
| [← Previous: Modernizing apps with Copilot CLI][previous-lesson] | [Next: Wrap-up →][next-lesson] |
|:--|--:|

Everything so far has been scoped to a single repository, or to you as the individual developer. The instructions, custom agents, agent skills, and lifecycle hooks you committed to AssetTrack do travel to anyone who clones it — but they stop at that repo's boundary. The MCP configuration was saved to your user settings. In practice, though, there are always rules, agents, skills, and shared resources that shouldn't belong to single repository; they encode how the whole organization works, and every developer at Contoso should get them automatically. This module moves that setup to the enterprise level: a custom MCP server that exposes a shared resource, a plugin that bundles your AI infrastructure into a single installable unit, and enterprise standards that push it to every developer without anyone cloning a repo or copying a file.
> git checkout start-of-module-07
> ```
>
> The plugin and MCP work in this module targets your fork only, but the patterns are written for org-wide rollout.

## Agent skills

Custom agents introduce *specialized personas*. **Agent skills** change what Copilot *knows* to do. A skill is a packaged capability, could include an instruction set, optional scripts and resources - that the agent can invoke **at runtime** when the task matches its trigger. Skills live in `.copilot/skills/` (for repo-scoped) or `~/.copilot/skills/` (for user-scoped) and in Copilot CLI, you use `/skills` to view and manage them.
6. Fill out the form, using <kbd>Tab</kbd> to move between fields, with the following information:
- **Server Name**: `playwright`
- **Server type**: **STDIO**
- **Command**: `npx @playwright/mcp@latest`
The [!CAUTION] block describing safe-outputs.staged:true mode is now
contradictory since the workflow runs live (staged:true was removed
from the config). Drop the block from the markdown body; regenerate the
lock file's body_hash to match.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings August 25, 2026 19:43
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review details

Suppressed comments (1)

.github/aw/actions-lock.json:26

  • This downgrades the shared action lock from gh-aw v0.84.3 to v0.81.6 and removes the existing setup-cli entry, while the repository's other generated workflow locks still require setup v0.84.3. Recompile this workflow with the repository's current gh-aw v0.84.3 so both this registry and advanced-copilot-cli-sync.lock.yml are generated consistently.
    "github/gh-aw-actions/setup@v0.81.6": {
      "repo": "github/gh-aw-actions/setup",
      "version": "v0.81.6",
      "sha": "ba6380cc6e5be5d21677bebe04d52fb48e3abec7"
  • Files reviewed: 15/21 changed files
  • Comments generated: 3
  • Review effort level: Balanced

Comment on lines +15 to +18
create-pull-request:
labels: [automated-update, learning-hub, advanced-copilot-cli]
title-prefix: "[bot] "
base-branch: main

```bash
curl -o .github/hooks/scripts/test-router.sh \
https://raw.githubusercontent.com/GeekTrainer/advanced-copilot-cli/main/assets/04/.github/hooks/scripts/test-router.sh
1. In your main session, have Copilot find the representative plan in the course repository and save it into your repo. Copilot CLI ships with the GitHub MCP server, so it can locate the file by repository and name rather than a brittle raw URL:

```text
Using the built-in GitHub MCP server, find the audit-svc migration plan in the GeekTrainer/advanced-copilot-cli repository — it's the resource file under content/resources for modernizing audit-svc. Read its contents and save them to docs/modernization/audit-svc-plan.md in this repo. Save it as-is — don't summarize or reformat it.
Copilot AI review requested due to automatic review settings August 25, 2026 19:52

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review details

Suppressed comments (6)

Previously missed (3) — in code that hasn't changed since the last review.

.github/workflows/advanced-copilot-cli-sync.md:28

  • The declared source is already ahead of the seeded mirror. Current main uses github-samples/contoso-inventory in Modules 0, 3, and 8 and github-samples/advanced-copilot-cli in the Module 4 download and Module 6 MCP prompt, while the added pages still reference the old GeekTrainer repositories. Refresh the seed from current upstream before publishing so the initial mirror satisfies the PR's alignment claim.
- **Repository:** [`github-samples/advanced-copilot-cli`](https://github.com/github-samples/advanced-copilot-cli)
- **Branch / ref to read from:** `main` (the repository's default branch)

website/src/content/docs/learning-hub/advanced-copilot-cli/multi-stack/02-building-ai-infrastructure.md:202

  • .copilot/skills/ is not a supported repository-level Agent Skills location, and this statement contradicts the working .github/skills/ path used in step 5. Learners following this explanation can create a skill that Copilot CLI does not discover.
Custom agents introduce *specialized personas*. **Agent skills** change what Copilot *knows* to do. A skill is a packaged capability, could include an instruction set, optional scripts and resources - that the agent can invoke **at runtime** when the task matches its trigger. Skills live in `.copilot/skills/` (for repo-scoped) or `~/.copilot/skills/` (for user-scoped) and in Copilot CLI, you use `/skills` to view and manage them.

website/src/content/docs/learning-hub/advanced-copilot-cli/multi-stack/06-modernize-apps.md:82

  • This renders as a standalone ordered-list item numbered “2,” because the preceding LSP explanation is a normal paragraph rather than item 1. Remove the 2. prefix (or make both extension points a real two-item list) so the section is not visibly misnumbered. Apply the correction upstream as well to preserve mirror fidelity.

This issue also appears on line 258 of the same file.

2. **An MCP server** extends what Copilot can *do*; a documentation MCP server points that extension at first-party docs. [Model Context Protocol (MCP)][mcp-concept] is an open standard for giving a model access to external tools and data, and Copilot CLI ships with the GitHub MCP server built in. For a Spring Boot major upgrade the documentation that matters is the frameworks' own, and the most direct way to reach it is [GitMCP][gitmcp], an open-source server that turns any public GitHub repository into a documentation surface. Point it at `spring-projects/spring-boot` and Copilot reads Spring's own docs straight from the source, with no account or API key — and because it's open source you can self-host it. Pointing Copilot at a live docs surface is what keeps its framework claims tied to current guidance instead of whatever version happened to be current when its training data was frozen. For a framework major upgrade where the whole point is that things changed, that freshness is the difference between advice you can trust and advice you have to re-verify by hand.  

.github/workflows/advanced-copilot-cli-sync.md:18

  • create-pull-request currently permits patches to any repository path. This sync agent only needs the course mirror, images, navigation, and optional codespell allowlist, so leaving the output unrestricted unnecessarily expands the blast radius of upstream prompt content.
  create-pull-request:
    labels: [automated-update, learning-hub, advanced-copilot-cli]
    title-prefix: "[bot] "
    base-branch: main

.github/aw/actions-lock.json:26

  • This recompilation downgrades the repository-wide gh-aw action pin from v0.84.3 to v0.81.6 and removes the v0.84.3 setup-cli entry, although existing generated workflows and copilot-setup-steps.yml still use those v0.84.3 actions. Recompile this workflow with the repository's current gh-aw version and regenerate both lock artifacts without replacing the shared pins with an older runtime.
    "github/gh-aw-actions/setup@v0.81.6": {
      "repo": "github/gh-aw-actions/setup",
      "version": "v0.81.6",
      "sha": "ba6380cc6e5be5d21677bebe04d52fb48e3abec7"

website/src/content/docs/learning-hub/advanced-copilot-cli/multi-stack/06-modernize-apps.md:258

  • Calling Jackson 3.1.4 “still-vulnerable” appears backwards: the published 3.1.x Jackson advisories identify 3.1.4 as the fixed release (for example, GHSA-5jmj-h7xm-6q6v affects versions before 3.1.4). Either cite a newer advisory whose affected range includes 3.1.4 or remove the forced BOM override; otherwise learners are instructed to change dependency management based on an unsupported security claim.
    Watch the agent work the loop: it bumps the `spring-boot-starter-parent` to Spring Boot `4.1.0` and the `java.version` from `17` to `21`, re-points the `jackson-bom` currency pin at a CVE-clean Jackson 3 (Boot 4.1.0 otherwise resolves a still-vulnerable Jackson `3.1.4`), and builds and tests after each phase. When the LSP is active, notice that it locates callers and symbols precisely rather than grepping.
  • Files reviewed: 15/21 changed files
  • Comments generated: 1
  • Review effort level: Balanced

Comment on lines +71 to +81
> [!NOTE]
> You'll start Copilot CLI with `--yolo`, which auto-approves every edit, command, and tool call so the work doesn't stop for permission on each step — useful once the `/fleet` build is running. That's appropriate here because a codespace is the kind of sandboxed, disposable container that [Module 1][m01] called out as the right home for YOLO mode. Treat it as the exception: on your own machine, or anywhere near real credentials or unreviewed code, start Copilot with plain `copilot` and approve actions deliberately.

1. Return to your codespace. If you closed it, navigate to your repository on GitHub.com, select **Code** > **Codespaces**, then reopen your existing codespace.
2. Open a terminal window by selecting <kbd>Ctrl</kbd> + <kbd>`</kbd>.
3. Create and switch to a feature branch with `git switch -c feat/barcode-support`.
4. Start Copilot CLI in YOLO mode from the repository root:

```bash
copilot --yolo
```

@aaronpowell aaronpowell left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two fixes identified in the comments.

I'm a little unsure on is the terminology "AssetTrack" - is this a product or something that readers should be familiar with when they come to the section of the website?

"sha": "c863074b673419603d146aab585e2986ef08deec"
},
"github/gh-aw-actions/setup@v0.84.3": {
"github/gh-aw-actions/setup@v0.81.6": {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a downgrade of the AW action - can it be reverted.


When doing standard development, the first step is often to fork or clone the repository you'll be contributing to. For our course, since you'll be working through the exercises on your own, you'll grab a separate copy of the project. You'll do this by creating a new instance of the repository by using a [template repository][github-template-docs] on your own personal GitHub account.

1. In your browser, navigate to [https://github.com/geektrainer/legacy-app](https://github.com/geektrainer/legacy-app).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This link appears broken

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

new-submission PR adds at least one new contribution website-update PR touches website content or code workflow PR touches workflow automation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants