From 0fd00116d3e364220a0d3b1208587dbb54ee8870 Mon Sep 17 00:00:00 2001 From: Christopher Harrison Date: Mon, 27 Jul 2026 15:47:28 -0700 Subject: [PATCH] docs: streamline Copilot CLI launch flow and group reference links Fold the "return to / launch Copilot CLI" steps into each lesson's first exercise instead of a standalone callout, move all mid-file link-reference definitions into a single trailing cluster per file, and drop the unused agent-skill screenshot. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 7fd1673d-806b-4db8-bffd-9841a406d247 --- docs/_images/cli-5-agent-skill.png | Bin 15007 -> 0 bytes docs/cli/0-prerequisites.md | 4 +- docs/cli/2-custom-instructions.md | 38 ++++++----------- docs/cli/3-generating-code.md | 31 ++++---------- docs/cli/4-mcp.md | 31 ++++---------- docs/cli/5-agent-skills.md | 66 +++++++++++------------------ docs/cli/6-custom-agents.md | 33 ++++----------- docs/cli/7-slash-commands.md | 27 +++--------- docs/cli/README.md | 3 +- 9 files changed, 73 insertions(+), 160 deletions(-) delete mode 100644 docs/_images/cli-5-agent-skill.png diff --git a/docs/_images/cli-5-agent-skill.png b/docs/_images/cli-5-agent-skill.png deleted file mode 100644 index 60f77eb661b6dcdbd9f159e91fd21226af7190d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15007 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 [!NOTE] > This workshop is built to run inside a codespace or local [dev container][dev-containers]. Both ensure the environment has all the necessary prerequisites installed for a smooth experience. If you'd prefer to run it locally, open the cloned repository in VS Code and select **Reopen in Container** when prompted — VS Code will build the same dev container the codespace uses. -[codespaces]: https://github.com/features/codespaces -[dev-containers]: https://code.visualstudio.com/docs/devcontainers/containers ## Summary Congratulations, you have created a copy of the lab repository! You also began the creation process of your codespace, which you'll use when you begin working with Copilot CLI. @@ -68,3 +66,5 @@ Let's install Copilot CLI and authenticate it with your GitHub account. Continue [template-repository]: https://docs.github.com/repositories/creating-and-managing-repositories/creating-a-template-repository [codespaces-quickstart]: https://docs.github.com/codespaces/getting-started/quickstart [next-lesson]: ../1-install-copilot-cli/ +[codespaces]: https://github.com/features/codespaces +[dev-containers]: https://code.visualstudio.com/docs/devcontainers/containers diff --git a/docs/cli/2-custom-instructions.md b/docs/cli/2-custom-instructions.md index a42c9ee2..e1bfab7d 100644 --- a/docs/cli/2-custom-instructions.md +++ b/docs/cli/2-custom-instructions.md @@ -66,10 +66,6 @@ There isn't one specific way to create instructions files, just as there isn't o > > Looking for templates or a starting point? Explore [awesome-copilot][awesome-copilot], a repository full of instruction files, custom agents, and other resources. -[ui-instructions]: https://github.com/github-samples/tailspin-toys/blob/main/.github/instructions/ui.instructions.md -[astro-instructions]: https://github.com/github-samples/tailspin-toys/blob/main/.github/instructions/astro.instructions.md -[awesome-copilot]: https://github.com/github/awesome-copilot -[custom-instructions-support]: https://docs.github.com/copilot/reference/custom-instructions-support ## Explore the custom instructions files in this project Take a moment to read the instruction files this repository ships with — there's one core `copilot-instructions.md` and a collection of `*.instructions.md` files for various tasks. Open these in your editor or the GitHub web UI. @@ -105,34 +101,23 @@ You'll be making code changes, so create a branch to work in. To see the impact of custom instructions, start by generating code with the current instructions in place. Later, you'll update the file and run a follow-up prompt. -> [!TIP] -> **Start a Copilot CLI session** -> -> Before you start the exercises below, return to your codespace and open a terminal (Ctrl+\` if one isn't already open). Then start Copilot CLI with `--yolo` and `--enable-all-github-mcp-tools`: -> -> ```bash -> copilot --yolo --enable-all-github-mcp-tools -> ``` -> -> To pick up your most recent session for this project instead of starting fresh, run `copilot --yolo --enable-all-github-mcp-tools --continue`. If Copilot CLI is already running from an earlier exercise, send `/clear` to start a clean conversation. -> -> `--enable-all-github-mcp-tools` enables the read/write GitHub MCP tools for the current session, so Copilot can read your backlog and open pull requests during the workshop flow. - > [!CAUTION] > `--yolo` enables full automatic permissions (`--allow-all-tools`, `--allow-all-paths`, and `--allow-all-urls`). Use it only in an isolated environment like a Codespace or VM, and never alias it as your default for day-to-day development. See [Allowing and denying tool use][allow-all-warning] for details. -[allow-all-warning]: https://docs.github.com/copilot/how-tos/copilot-cli/use-copilot-cli/allowing-tools -1. Make sure your Copilot CLI session is running from the **repository root** so it picks up `.github/copilot-instructions.md` automatically. -2. At the Copilot CLI prompt, ask it to generate the publishers helper that the filtering UI will use: +Running Copilot CLI from the **repository root** ensures it picks up `.github/copilot-instructions.md` automatically. `--enable-all-github-mcp-tools` turns on the read/write GitHub MCP tools so Copilot can read your backlog and open pull requests later in the workshop. + +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. Return to your open Copilot CLI session. If the terminal is closed or you exited Copilot CLI, open a terminal by selecting Ctrl+\`, then start it from the repository root by running `copilot --yolo --enable-all-github-mcp-tools`. Trust the project folder if prompted, then run `/models` and select **Auto**. +3. At the Copilot CLI prompt, ask it to generate the publishers helper that the filtering UI will use: ```plaintext Create a new data-access helper at src/lib/publishers.ts to return a list of all publishers. It should return the name and id for all publishers. Do not run the tests yet. ``` -3. Copilot CLI will explore the project, propose a plan, and write the file in this `--yolo` session. Monitor the changes in your terminal output, then review in your editor. -4. Open the generated `src/lib/publishers.ts` in your editor. -5. Notice the helper is a typed function that takes a `db` client as its first argument and returns a typed array of publishers — that's coming from the data-layer conventions in `.github/instructions/drizzle.instructions.md` (which applies to `src/lib/*.ts`). -6. Notice the generated code **is missing** TSDoc doc comments and a file-level comment header. +4. Copilot CLI will explore the project, propose a plan, and write the file in this `--yolo` session. Monitor the changes in your terminal output, then review in your editor. +5. Open the generated `src/lib/publishers.ts` in your editor. +6. Notice the helper is a typed function that takes a `db` client as its first argument and returns a typed array of publishers — that's coming from the data-layer conventions in `.github/instructions/drizzle.instructions.md` (which applies to `src/lib/*.ts`). +7. Notice the generated code **is missing** TSDoc doc comments and a file-level comment header. > [!CAUTION] > Copilot is probabilistic — there's a chance it'll add doc comments even without being told. If that happens, that's fine; the *consistency* improvement after the instruction update is still the takeaway. @@ -237,3 +222,8 @@ Next, you'll apply these instructions while implementing backlog work in [the ge [instruction-files]: https://docs.github.com/copilot/customizing-copilot/about-customizing-github-copilot-chat-responses [instructions-best-practices]: https://docs.github.com/enterprise-cloud@latest/copilot/using-github-copilot/coding-agent/best-practices-for-using-copilot-to-work-on-tasks#adding-custom-instructions-to-your-repository [copilot-instructions-five-tips]: https://github.blog/ai-and-ml/github-copilot/5-tips-for-writing-better-custom-instructions-for-copilot/ +[allow-all-warning]: https://docs.github.com/copilot/how-tos/copilot-cli/use-copilot-cli/allowing-tools +[ui-instructions]: https://github.com/github-samples/tailspin-toys/blob/main/.github/instructions/ui.instructions.md +[astro-instructions]: https://github.com/github-samples/tailspin-toys/blob/main/.github/instructions/astro.instructions.md +[awesome-copilot]: https://github.com/github/awesome-copilot +[custom-instructions-support]: https://docs.github.com/copilot/reference/custom-instructions-support diff --git a/docs/cli/3-generating-code.md b/docs/cli/3-generating-code.md index 2bbbbb55..7a71d1f2 100644 --- a/docs/cli/3-generating-code.md +++ b/docs/cli/3-generating-code.md @@ -24,33 +24,18 @@ One of the best uses of AI is planning. Oftentimes you'll have a good concept of You'll start the process of creating the new functionality by utilizing plan mode in Copilot CLI. -> [!TIP] -> **Start a Copilot CLI session** -> -> Before you start the exercises below, return to your codespace and open a terminal (Ctrl+\` if one isn't already open). Then start Copilot CLI with `--yolo` and `--enable-all-github-mcp-tools`: -> -> ```bash -> copilot --yolo --enable-all-github-mcp-tools -> ``` -> -> To pick up your most recent session for this project instead of starting fresh, run `copilot --yolo --enable-all-github-mcp-tools --continue`. If Copilot CLI is already running from an earlier exercise, send `/clear` to start a clean conversation. -> -> `--enable-all-github-mcp-tools` enables the read/write GitHub MCP tools for the current session, so Copilot can read your backlog and open pull requests during the workshop flow. - -> [!CAUTION] -> `--yolo` enables full automatic permissions (`--allow-all-tools`, `--allow-all-paths`, and `--allow-all-urls`). Use it only in an isolated environment like a Codespace or VM, and never alias it as your default for day-to-day development. See [Allowing and denying tool use][allow-all-warning] for details. - -[allow-all-warning]: https://docs.github.com/copilot/how-tos/copilot-cli/use-copilot-cli/allowing-tools -1. Enter the following prompt into Copilot CLI to create a plan based on the filtering issue: +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. Return to your open Copilot CLI session. If the terminal is closed or you exited Copilot CLI, open a terminal by selecting Ctrl+\`, then start it from the repository root by running `copilot --yolo --enable-all-github-mcp-tools`. Trust the project folder if prompted, then run `/models` and select **Auto**. +3. Enter the following prompt into Copilot CLI to create a plan based on the filtering issue: ``` /plan Retrieve the issue on the repository related to adding filtering. We already added a publishers helper in src/lib/publishers.ts, so treat that as existing work and plan the remaining updates (games filtering logic, UI, and tests). ``` -2. Copilot may ask follow-up questions as it builds out its plan. As those arise, answer them based on how you'd build out the functionality. -3. Once the plan is generated, review the blueprint. You should notice it recommends remaining changes across the data layer and UI, as well as generating tests. -4. Copilot CLI will offer you the ability to provide additional feedback to the plan. You can cursor down to the indicated section, then type your suggestions. Copilot will incorporate your suggestions into a new version of the plan. -5. Once you're satisfied, select the option provided by Copilot to begin work building the new feature! +4. Copilot may ask follow-up questions as it builds out its plan. As those arise, answer them based on how you'd build out the functionality. +5. Once the plan is generated, review the blueprint. You should notice it recommends remaining changes across the data layer and UI, as well as generating tests. +6. Copilot CLI will offer you the ability to provide additional feedback to the plan. You can cursor down to the indicated section, then type your suggestions. Copilot will incorporate your suggestions into a new version of the plan. +7. Once you're satisfied, select the option provided by Copilot to begin work building the new feature! > [!NOTE] > Because Copilot is probabilistic, the exact text and options provided will vary. But you will notice an option to begin building that will read something similar to: @@ -59,7 +44,7 @@ You'll start the process of creating the new functionality by utilizing plan mod > > Copilot may offer you the option to enable [autopilot mode](https://docs.github.com/copilot/concepts/agents/copilot-cli/autopilot), as shown in the example above. Autopilot mode allows Copilot CLI to work through a task without waiting for your input after each step. Once you give the initial instruction, Copilot CLI works through each step autonomously until it determines the task is complete. As we are running in a contained environment, we're OK running autopilot and allowing all tools. -6. Copilot will get to work generating the files! +8. Copilot will get to work generating the files! > [!NOTE] > This operation will likely take several minutes. You will see Copilot edit and create files, update and generate tests, and run all of the tests to ensure everything succeeds. Now's a good time to reflect on what you've explored thus far, or to enjoy a beverage. diff --git a/docs/cli/4-mcp.md b/docs/cli/4-mcp.md index 0c8ece7a..35bc2649 100644 --- a/docs/cli/4-mcp.md +++ b/docs/cli/4-mcp.md @@ -36,37 +36,22 @@ There are many other MCP servers available that provide access to different tool The quickest way to add a server is the interactive `/mcp add` command. You'll register the [Playwright MCP server][playwright-mcp-server], which gives Copilot a browser it can control. -> [!TIP] -> **Start a Copilot CLI session** -> -> Before you start the exercises below, return to your codespace and open a terminal (Ctrl+\` if one isn't already open). Then start Copilot CLI with `--yolo` and `--enable-all-github-mcp-tools`: -> -> ```bash -> copilot --yolo --enable-all-github-mcp-tools -> ``` -> -> To pick up your most recent session for this project instead of starting fresh, run `copilot --yolo --enable-all-github-mcp-tools --continue`. If Copilot CLI is already running from an earlier exercise, send `/clear` to start a clean conversation. -> -> `--enable-all-github-mcp-tools` enables the read/write GitHub MCP tools for the current session, so Copilot can read your backlog and open pull requests during the workshop flow. - -> [!CAUTION] -> `--yolo` enables full automatic permissions (`--allow-all-tools`, `--allow-all-paths`, and `--allow-all-urls`). Use it only in an isolated environment like a Codespace or VM, and never alias it as your default for day-to-day development. See [Allowing and denying tool use][allow-all-warning] for details. - -[allow-all-warning]: https://docs.github.com/copilot/how-tos/copilot-cli/use-copilot-cli/allowing-tools -1. In your Copilot CLI session, enter: +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. Return to your open Copilot CLI session. If the terminal is closed or you exited Copilot CLI, open a terminal by selecting Ctrl+\`, then start it from the repository root by running `copilot --yolo --enable-all-github-mcp-tools`. Trust the project folder if prompted, then run `/models` and select **Auto**. +3. In your Copilot CLI session, enter: ```text /mcp add ``` -2. A configuration form appears. Use Tab to move between fields and fill it in as follows: +4. A configuration form appears. Use Tab to move between fields and fill it in as follows: - **Server Name**: `playwright` - **Server Type**: select **Local** (also labelled **STDIO**) - **Command**: `npx @playwright/mcp@latest --headless` - **Tools**: leave as `*` to allow all of the server's tools -3. Press Ctrl+S to save. The server is added and available immediately — no restart required. +5. Press Ctrl+S to save. The server is added and available immediately — no restart required. The `--headless` flag tells Playwright to run the browser without a visible window, which is required inside a codespace where there's no desktop to display it. Behind the scenes, this writes the server to your `~/.copilot/mcp-config.json` file: @@ -83,13 +68,13 @@ The `--headless` flag tells Playwright to run the browser without a visible wind } ``` -4. Confirm the server is registered and active by listing your MCP servers: +6. Confirm the server is registered and active by listing your MCP servers: ```text /mcp show ``` -5. You should see `playwright` listed alongside the built-in `github` server. +7. You should see `playwright` listed alongside the built-in `github` server. > [!NOTE] > The Tailspin Toys project already uses Playwright for its end-to-end tests, so the browser Playwright needs is typically already installed. If Copilot later reports that a browser is missing, have it run `npx playwright install chromium` and try again. @@ -133,7 +118,6 @@ Copilot will launch a browser through the Playwright MCP server, walk through ea > [!NOTE] > The app needs to be running at `http://localhost:4321` for this test. If you stopped the dev server, start it again before sending the prompt. The first time Copilot uses the Playwright MCP server it may need to download a browser — if it reports a missing browser, have it run `npx playwright install chromium` and try again. -[playwright-mcp-server]: https://github.com/microsoft/playwright-mcp ## Summary and next steps Congratulations, you used the Playwright MCP server to manually test your feature with Copilot CLI! To recap, you: @@ -156,3 +140,4 @@ Now that you've confirmed the feature works, you can continue to the next exerci [mcp-blog-post]: https://github.blog/ai-and-ml/llms/what-the-heck-is-mcp-and-why-is-everyone-talking-about-it/ [github-mcp-server]: https://github.com/github/github-mcp-server [cli-add-mcp]: https://docs.github.com/copilot/how-tos/copilot-cli/customize-copilot/add-mcp-servers +[playwright-mcp-server]: https://github.com/microsoft/playwright-mcp diff --git a/docs/cli/5-agent-skills.md b/docs/cli/5-agent-skills.md index 291439b0..5eecd846 100644 --- a/docs/cli/5-agent-skills.md +++ b/docs/cli/5-agent-skills.md @@ -7,22 +7,6 @@ lastUpdated: 2026-06-30 Doing app development often involves repeatable tasks like generating builds, running tests, or creating pull requests. **Agent skills** let you give Copilot — and other AI agents — guidance on how to perform those tasks. A skill is a folder of instructions, scripts, and resources that the agent can load on demand. [Agent Skills is an open standard][agent-skills-repo] used by a range of agents, so the same skill can work across Copilot Chat in agent mode, Copilot cloud agent, Copilot CLI, and the GitHub Copilot app. -Skills live in the `.github/skills` folder of a project, or globally in `~/.copilot/skills`. Each skill is a folder containing a `SKILL.md` file with YAML frontmatter (a `name` and a `description`) followed by the markdown instructions: - -```yaml ---- -name: make-contribution -description: All changes to code must follow the guidance documented in the repository. Before any issue is filed, branch is made, commits generated, or pull request (or PR) created, a search must be done to ensure the right steps are followed. Whenever asked to create an issue, commit messages, to push code, or create a PR, use this skill so everything is done correctly. ---- -``` - -Skills can also include subfolders with scripts, assets, and reference material. The full structure is covered in the [agent skills specification][agent-skills-spec]. - -> [!TIP] -> Skills are loaded dynamically. The agent decides which skill applies based on the `description` field — a clear, scenario-specific description is the difference between a skill that gets used and one that gets ignored. - -[agent-skills-repo]: https://github.com/agentskills/agentskills -[agent-skills-spec]: https://agentskills.io/specification Let's explore how a skill can ensure pull requests follow the specifications set forth by our team. ## Scenario @@ -45,6 +29,22 @@ In this exercise you will: - learn how skills are utilized by the AI agent. - create a PR which matches the guidelines with the help of the skill. +## Creating agent skills + +Skills live in the `.github/skills` folder of a project, or globally in `~/.copilot/skills`. Each skill is a folder containing a `SKILL.md` file with YAML frontmatter (a `name` and a `description`) followed by the markdown instructions: + +```yaml +--- +name: make-contribution +description: All changes to code must follow the guidance documented in the repository. Before any issue is filed, branch is made, commits generated, or pull request (or PR) created, a search must be done to ensure the right steps are followed. Whenever asked to create an issue, commit messages, to push code, or create a PR, use this skill so everything is done correctly. +--- +``` + +Skills can also include subfolders with scripts, assets, and reference material. The full structure is covered in the [agent skills specification][agent-skills-spec]. + +> [!TIP] +> Skills are loaded dynamically. The agent decides which skill applies based on the `description` field — a clear, scenario-specific description is the difference between a skill that gets used and one that gets ignored. + ## Executing skills Skills are loaded dynamically when the agent determines they're necessary. The decision of what skills to use is driven by the description in the `SKILL.md` file. As such, it's important to have clear descriptions which define the use case for the skill. @@ -61,36 +61,18 @@ Because Tailspin Toys has a set of requirements for creating PRs, they created a As highlighted previously, skills are automatically invoked by Copilot CLI. As a result, all we need to do is ask Copilot to create a PR! -> [!TIP] -> **Start a Copilot CLI session** -> -> Before you start the exercises below, return to your codespace and open a terminal (Ctrl+\` if one isn't already open). Then start Copilot CLI with `--yolo` and `--enable-all-github-mcp-tools`: -> -> ```bash -> copilot --yolo --enable-all-github-mcp-tools -> ``` -> -> To pick up your most recent session for this project instead of starting fresh, run `copilot --yolo --enable-all-github-mcp-tools --continue`. If Copilot CLI is already running from an earlier exercise, send `/clear` to start a clean conversation. -> -> `--enable-all-github-mcp-tools` enables the read/write GitHub MCP tools for the current session, so Copilot can read your backlog and open pull requests during the workshop flow. - -> [!CAUTION] -> `--yolo` enables full automatic permissions (`--allow-all-tools`, `--allow-all-paths`, and `--allow-all-urls`). Use it only in an isolated environment like a Codespace or VM, and never alias it as your default for day-to-day development. See [Allowing and denying tool use][allow-all-warning] for details. - -[allow-all-warning]: https://docs.github.com/copilot/how-tos/copilot-cli/use-copilot-cli/allowing-tools -1. Ask Copilot to create a PR by using the following prompt: +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. Return to your open Copilot CLI session. If the terminal is closed or you exited Copilot CLI, open a terminal by selecting Ctrl+\`, then start it from the repository root by running `copilot --yolo --enable-all-github-mcp-tools`. Trust the project folder if prompted, then run `/models` and select **Auto**. +3. Ask Copilot to create a PR by using the following prompt: ``` Can you please create a pull request for me! ``` -2. Copilot will acknowledge the request. After a few moments, you'll notice Copilot will indicate it's utilizing the **make-contribution** skill. - - ![Screenshot of the agent skill being called by Copilot CLI](../_images/cli-5-agent-skill.png) - -3. Copilot will then follow the instructions in the skill. It will start by running the tests, then create a branch, commits, and eventually the PR. -4. Once the PR is created, return to your repository and open the PR. Note the sections follow the guidelines set forth in the skill, matching the requirements the team put forth. -5. Before moving to the next exercise, reset your local workspace to a fresh branch from `main` so your accessibility work stays separate from this filtering PR: +4. Copilot will acknowledge the request. After a few moments, you'll notice Copilot will indicate it's utilizing the **make-contribution** skill. +5. Copilot will then follow the instructions in the skill. It will start by running the tests, then create a branch, commits, and eventually the PR. +6. Once the PR is created, return to your repository and open the PR. Note the sections follow the guidelines set forth in the skill, matching the requirements the team put forth. +7. Before moving to the next exercise, reset your local workspace to a fresh branch from `main` so your accessibility work stays separate from this filtering PR: ```bash git checkout main @@ -119,3 +101,5 @@ Skills are perfect for tasks, but for more robust operations we want to take adv [next-lesson]: ../6-custom-agents/ [about-agent-skills]: https://docs.github.com/copilot/concepts/agents/about-agent-skills [awesome-copilot-skills]: https://github.com/github/awesome-copilot/tree/main/skills +[agent-skills-repo]: https://github.com/agentskills/agentskills +[agent-skills-spec]: https://agentskills.io/specification diff --git a/docs/cli/6-custom-agents.md b/docs/cli/6-custom-agents.md index bfd9c4b7..e7f81dce 100644 --- a/docs/cli/6-custom-agents.md +++ b/docs/cli/6-custom-agents.md @@ -20,9 +20,6 @@ Custom agents have their own context window and are built to orchestrate skills > [!NOTE] > There's no single "right" way to author a custom agent. As with anything in AI, test and iterate to find what works for your environments and scenarios. -[custom-agents-concept]: https://docs.github.com/copilot/concepts/agents/cloud-agent/about-custom-agents -[agent-skills-concept]: https://docs.github.com/copilot/concepts/agents/about-agent-skills -[wcag]: https://www.w3.org/WAI/standards-guidelines/wcag/ ## Scenario Many web applications fall short of being accessible to all users, and the website you're working in is no exception. You'll use a custom agent to identify and resolve accessibility shortcomings. @@ -54,32 +51,17 @@ A custom agent has already been created for you for accessibility. Let's review You can start a custom agent in Copilot CLI by using the `/agent` command. Let's perform an accessibility pass on our website. -> [!TIP] -> **Start a Copilot CLI session** -> -> Before you start the exercises below, return to your codespace and open a terminal (Ctrl+\` if one isn't already open). Then start Copilot CLI with `--yolo` and `--enable-all-github-mcp-tools`: -> -> ```bash -> copilot --yolo --enable-all-github-mcp-tools -> ``` -> -> To pick up your most recent session for this project instead of starting fresh, run `copilot --yolo --enable-all-github-mcp-tools --continue`. If Copilot CLI is already running from an earlier exercise, send `/clear` to start a clean conversation. -> -> `--enable-all-github-mcp-tools` enables the read/write GitHub MCP tools for the current session, so Copilot can read your backlog and open pull requests during the workshop flow. - -> [!CAUTION] -> `--yolo` enables full automatic permissions (`--allow-all-tools`, `--allow-all-paths`, and `--allow-all-urls`). Use it only in an isolated environment like a Codespace or VM, and never alias it as your default for day-to-day development. See [Allowing and denying tool use][allow-all-warning] for details. - -[allow-all-warning]: https://docs.github.com/copilot/how-tos/copilot-cli/use-copilot-cli/allowing-tools -1. Bring up the list of agents by typing `/agent` in the prompt window in Copilot CLI and selecting Enter. -2. Select the **Accessibility agent** from the list of available agents. -3. Use the following prompt to ask the accessibility agent to perform a review and generate fixes for the accessibility backlog item: +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. Return to your open Copilot CLI session. If the terminal is closed or you exited Copilot CLI, open a terminal by selecting Ctrl+\`, then start it from the repository root by running `copilot --yolo --enable-all-github-mcp-tools`. Trust the project folder if prompted, then run `/models` and select **Auto**. +3. Bring up the list of agents by typing `/agent` in the prompt window in Copilot CLI and selecting Enter. +4. Select the **Accessibility agent** from the list of available agents. +5. Use the following prompt to ask the accessibility agent to perform a review and generate fixes for the accessibility backlog item: ``` Perform an accessibility review of the site. Pull the related issue down from the repository for details. Implement a high-contrast mode toggle that persists the user's preference across page reloads. Ensure there are e2e tests for any updates made to the project. Then create a PR with the updates. ``` -4. Copilot gets to work on the task! It will start by retrieving the issue, then performing the review, generating updates, and finally creating the PR. You should also notice when it creates the PR it utilizes the skill focused on PRs for the project. +6. Copilot gets to work on the task! It will start by retrieving the issue, then performing the review, generating updates, and finally creating the PR. You should also notice when it creates the PR it utilizes the skill focused on PRs for the project. > [!NOTE] > This process will likely take a few minutes. It's a good time to reflect on everything you've learned, enjoy a beverage, or sneak ahead to the next module which talks about some additional commands available to you in Copilot CLI. @@ -110,3 +92,6 @@ Next up, let's explore [some slash commands][next-lesson] to learn some addition [awesome-copilot-agents]: https://github.com/github/awesome-copilot/tree/main/agents [org-custom-agents]: https://docs.github.com/copilot/how-tos/administer-copilot/manage-for-organization/prepare-for-custom-agents [enterprise-custom-agents]: https://docs.github.com/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-agents/prepare-for-custom-agents +[custom-agents-concept]: https://docs.github.com/copilot/concepts/agents/cloud-agent/about-custom-agents +[agent-skills-concept]: https://docs.github.com/copilot/concepts/agents/about-agent-skills +[wcag]: https://www.w3.org/WAI/standards-guidelines/wcag/ diff --git a/docs/cli/7-slash-commands.md b/docs/cli/7-slash-commands.md index 0bfb08d3..52f7d201 100644 --- a/docs/cli/7-slash-commands.md +++ b/docs/cli/7-slash-commands.md @@ -24,32 +24,17 @@ Using any tool, including an AI tool, is a skill. Working together as a team, sh Let's create a GitHub gist we could share with our team. -> [!TIP] -> **Start a Copilot CLI session** -> -> Before you start the exercises below, return to your codespace and open a terminal (Ctrl+\` if one isn't already open). Then start Copilot CLI with `--yolo` and `--enable-all-github-mcp-tools`: -> -> ```bash -> copilot --yolo --enable-all-github-mcp-tools -> ``` -> -> To pick up your most recent session for this project instead of starting fresh, run `copilot --yolo --enable-all-github-mcp-tools --continue`. If Copilot CLI is already running from an earlier exercise, send `/clear` to start a clean conversation. -> -> `--enable-all-github-mcp-tools` enables the read/write GitHub MCP tools for the current session, so Copilot can read your backlog and open pull requests during the workshop flow. - -> [!CAUTION] -> `--yolo` enables full automatic permissions (`--allow-all-tools`, `--allow-all-paths`, and `--allow-all-urls`). Use it only in an isolated environment like a Codespace or VM, and never alias it as your default for day-to-day development. See [Allowing and denying tool use][allow-all-warning] for details. - -[allow-all-warning]: https://docs.github.com/copilot/how-tos/copilot-cli/use-copilot-cli/allowing-tools -1. In the prompt window for Copilot CLI, send the following command: +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. Return to your open Copilot CLI session. If the terminal is closed or you exited Copilot CLI, open a terminal by selecting Ctrl+\`, then start it from the repository root by running `copilot --yolo --enable-all-github-mcp-tools`. Trust the project folder if prompted, then run `/models` and select **Auto**. +3. In the prompt window for Copilot CLI, send the following command: ``` /share gist ``` -2. In just a couple of moments, Copilot will create a gist and display the link. -3. Copy the link text. -4. In a new browser tab, paste the link to explore the gist. Note how the gist highlights the prompts sent, skills and agents used, Copilot's thought process, and even the code and results from locally run commands. +4. In just a couple of moments, Copilot will create a gist and display the link. +5. Copy the link text. +6. In a new browser tab, paste the link to explore the gist. Note how the gist highlights the prompts sent, skills and agents used, Copilot's thought process, and even the code and results from locally run commands. The gists and markdown files generated by `/share` can be used for documentation purposes of how code was generated, or to share with your team about how certain actions were performed that generated the desired results from Copilot. diff --git a/docs/cli/README.md b/docs/cli/README.md index abd683c1..2ca8e6f9 100644 --- a/docs/cli/README.md +++ b/docs/cli/README.md @@ -35,8 +35,6 @@ Before attending this workshop, please ensure you have: > [!TIP] > No paid plan? Verified students can get GitHub Copilot for free through [GitHub Education][callout-student-plan-education]. The **Copilot Student** plan includes the agent, MCP, code review, and Copilot CLI features this workshop uses — so you can complete every harness with it. -[callout-student-plan-education]: https://github.com/education/students - > [!NOTE] > If you are using Copilot Business or Copilot Enterprise, ensure your admin has enabled Copilot CLI for use. @@ -53,3 +51,4 @@ Before attending this workshop, please ensure you have: [ex6]: 6-custom-agents/ [ex7]: 7-slash-commands/ [ex8]: 8-review/ +[callout-student-plan-education]: https://github.com/education/students