diff --git a/docs/_images/cli-8-azure-functions-proxy.png b/docs/_images/cli-8-azure-functions-proxy.png new file mode 100644 index 00000000..3955f14a Binary files /dev/null and b/docs/_images/cli-8-azure-functions-proxy.png differ diff --git a/docs/_images/cli-8-backer-concierge-widget.png b/docs/_images/cli-8-backer-concierge-widget.png new file mode 100644 index 00000000..0231c2e6 Binary files /dev/null and b/docs/_images/cli-8-backer-concierge-widget.png differ diff --git a/docs/_images/cli-8-create-foundry-project.png b/docs/_images/cli-8-create-foundry-project.png new file mode 100644 index 00000000..1ec39885 Binary files /dev/null and b/docs/_images/cli-8-create-foundry-project.png differ diff --git a/docs/_images/cli-8-deploy-foundry-model.png b/docs/_images/cli-8-deploy-foundry-model.png new file mode 100644 index 00000000..39d27c2f Binary files /dev/null and b/docs/_images/cli-8-deploy-foundry-model.png differ diff --git a/docs/_images/cli-8-export-db-catalog.png b/docs/_images/cli-8-export-db-catalog.png new file mode 100644 index 00000000..f36179e1 Binary files /dev/null and b/docs/_images/cli-8-export-db-catalog.png differ diff --git a/docs/_images/cli-8-foundry-agent-response.png b/docs/_images/cli-8-foundry-agent-response.png new file mode 100644 index 00000000..2c1667a1 Binary files /dev/null and b/docs/_images/cli-8-foundry-agent-response.png differ diff --git a/docs/_images/cli-8-hosted-agent-deployment.png b/docs/_images/cli-8-hosted-agent-deployment.png new file mode 100644 index 00000000..49bb1170 Binary files /dev/null and b/docs/_images/cli-8-hosted-agent-deployment.png differ diff --git a/docs/_images/cli-8-passing-acceptance-scenarios.png b/docs/_images/cli-8-passing-acceptance-scenarios.png new file mode 100644 index 00000000..1cbc9a54 Binary files /dev/null and b/docs/_images/cli-8-passing-acceptance-scenarios.png differ diff --git a/docs/_images/cli-8-sanitized-json-response.png b/docs/_images/cli-8-sanitized-json-response.png new file mode 100644 index 00000000..b34598cd Binary files /dev/null and b/docs/_images/cli-8-sanitized-json-response.png differ diff --git a/docs/_images/cli-8-select-foundry-model.png b/docs/_images/cli-8-select-foundry-model.png new file mode 100644 index 00000000..9b332b8e Binary files /dev/null and b/docs/_images/cli-8-select-foundry-model.png differ diff --git a/docs/_images/cli-8-verify-generated-agent.png b/docs/_images/cli-8-verify-generated-agent.png new file mode 100644 index 00000000..bc8a06d3 Binary files /dev/null and b/docs/_images/cli-8-verify-generated-agent.png differ diff --git a/docs/cli/7-slash-commands.md b/docs/cli/7-slash-commands.md index 6f67591f..be354f12 100644 --- a/docs/cli/7-slash-commands.md +++ b/docs/cli/7-slash-commands.md @@ -141,7 +141,7 @@ Using slash commands in Copilot CLI allows you to configure it, share sessions, - `/model` to explore the list of available models and select a new one if you so desire. - Learned about `/delegate` as an optional bridge to cloud agent. -There are of course more slash commands available, and more to explore with Copilot CLI! Let's close out our journey by [reviewing what we've learned][next-lesson] and some next steps to continue learning. +There are of course more slash commands available, and more to explore with Copilot CLI! If you want to go further, the [optional Microsoft Foundry lesson][foundry-lesson] walks through building a hosted agent on top of the Tailspin catalog. Otherwise, let's close out our journey by [reviewing what we've learned][next-lesson] and some next steps to continue learning. ## Resources @@ -152,7 +152,8 @@ There are of course more slash commands available, and more to explore with Copi - [Selecting Models in Copilot CLI][selecting-models] [previous-lesson]: ../6-custom-agents/ -[next-lesson]: ../8-review/ +[next-lesson]: ../9-review/ +[foundry-lesson]: ../8-foundry-agent/ [using-copilot-cli]: https://docs.github.com/copilot/how-tos/use-copilot-agents/use-copilot-cli [about-copilot-cli]: https://docs.github.com/copilot/concepts/agents/about-copilot-cli [about-cloud-agent]: https://docs.github.com/copilot/concepts/agents/cloud-agent/about-cloud-agent diff --git a/docs/cli/8-foundry-agent.md b/docs/cli/8-foundry-agent.md new file mode 100644 index 00000000..afb0f303 --- /dev/null +++ b/docs/cli/8-foundry-agent.md @@ -0,0 +1,433 @@ +--- +title: "Exercise 8 - (Optional) Build a Backer Concierge AI Agent" +description: "Use GitHub Copilot CLI and the Microsoft Foundry Skill to create, test, deploy, and integrate a catalog-grounded hosted agent." +authors: + - juliamuiruri4 +lastUpdated: 2026-09-09 +--- + +In this optional lesson, you'll take the Tailspin catalog and build an AI agent on top of it. You'll use GitHub Copilot CLI to set up your own Microsoft Foundry project, choose and deploy a model, scaffold and test the agent, deploy it as a hosted agent, and connect it to the Tailspin Toys website. + +In this lesson, you will: + +- install the Azure Skills Plugin for GitHub Copilot CLI. +- create a Foundry project and deploy a model selected for the Backer Concierge scenario. +- scaffold, configure, and test a hosted agent from the terminal. +- deploy the agent to Microsoft Foundry. +- connect the hosted agent to the Tailspin Toys website. + +> [!IMPORTANT] +> Microsoft Foundry hosted agents are in public preview. +> +> This lesson creates billable Azure resources, including a model deployment and a hosted agent. Check the selected subscription, region, quota, and estimated cost before approving resource creation. Complete the cleanup section when you finish. + +## Prerequisites and setup + +Before you start, make sure you have: + +1. An Azure subscription. + + - [Free Azure subscription with $200 credit][azure-free] + - [Azure for Students with $100 credit][azure-students] + +1. Install the Azure CLI in the dev container: + + ```bash + curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash + az version + ``` + + Sign in to Azure CLI with `az login` and ensure you are using the correct subscription with `az account show` + +1. Install the [Azure Developer CLI][install-azd] version 1.27.1 or later. Microsoft Foundry uses `azd` to test and deploy hosted agents. + + ```bash + curl -sL https://aka.ms/install-azd.sh | bash + azd version + ``` + + Sign in to Azure Developer CLI with `azd auth login` and ensure you are using the correct subscription with `azd config show` + +1. Install the Azure Developer CLI (azd) Foundry extensions + + ```bash + azd ext install microsoft.foundry + ``` + +1. Install the [Azure Skills Plugin][azure-skills] which adds Azure skills, Azure MCP Server, and Foundry MCP Server to GitHub Copilot CLI. + + - Open a new Copilot CLI session to the side from the command palette. Press Command+Shift+P (Mac) or Ctrl+Shift+P (Windows/Linux), then select **Chat: New Copilot CLI session to the side**. + + - Add the Azure Skills marketplace. You only need to do this the first time you install the plugin: + + ```text + /plugin marketplace add microsoft/azure-skills + ``` + + - Install the Azure plugin: + + ```text + /plugin install azure@azure-skills + ``` + + - Confirm that the plugin configured the Azure MCP server: + + ```text + /mcp list + ``` + +The skills teach Copilot the workflow, while the MCP servers let it inspect and work with your Azure resources. + +> [!TIP] +> If the skills or MCP servers don't appear, try `/skills reload` or `/restart` + +## Scenario + +In a previous lesson, you added filtering by category and publisher. Filtering helps backers who already know what they want, but other backers ask questions such as *Which games would suit someone who loves Git puns?* Those questions don't have dropdown answers. + +In this lesson, you build a **Backer Concierge** that answers catalog questions while staying grounded in Tailspin Toys data. The agent should recommend only games in the Tailspin catalog and never invent games, publishers, ratings, funding totals, backer counts, prices, player counts, play times, or release dates. + +The previous exercises may have created and pushed other feature branches. Start this optional lesson from an up-to-date `main` branch so the agent work stays separate. + +```bash +git checkout main +git pull +git checkout -b foundry-agent-cli +``` + +## Generate the catalog export + +The agent needs the catalog as a file it can read. The Tailspin Toys sample includes a tested export script for this purpose. + +In Copilot CLI, enter: + +```text +Install the project dependencies, seed the database, then run the existing db:export script. Show me the command output and summarize the shape and grounding limits of db/catalog.json. +``` + +Copilot should run the equivalent of: + +```bash +npm install +npm run db:setup +npm run db:export +``` + +![Summary of the catalog export](../_images/cli-8-export-db-catalog.png) + +Open `db/catalog.json`. It should contain 21 games with a title, description, category, publisher, and star rating. Its `note` field states that the catalog doesn't contain funding totals, backer counts, pledge tiers, or release dates. It also has no price, player count, or play-time fields. Those omissions define the boundary your agent must respect. + +## Plan the Foundry work + +Before Copilot creates any Azure resources or changes the repository, use plan mode to make the intended workflow visible. + +1. Enter the following prompt: + + ```text + /plan Use the Microsoft Foundry Skill to plan a Backer Concierge hosted agent for this existing Tailspin Toys repository. Use a public Foundry project, Python 3.13, Microsoft Agent Framework, the Responses API, the Basic sample, and code deployment. Keep the agent in agent/backer-concierge and keep one azure.yaml at the repository root. Ground every answer in db/catalog.json, preserve conversation context, and add focused tests. Include project setup, model selection, local testing, deployment, remote invocation, estimated cost-bearing resources and cleanup. + ``` + +1. Review the proposed plan. Confirm that Copilot intends to use the `microsoft-foundry` skill and that it separates the hosted agent from the existing Astro application. + + If you note anything concerning or unexpected in the proposed plan, request revisions before proceeding. + +1. Leave plan mode after you are satisfied with the approach. + +## Set up a Foundry project and model + +The agent needs a Foundry project and a deployed model. Use the Microsoft Foundry Skill to select them from live availability and quota within your subscription. + +1. Ask Copilot to create the project: + + ```text + Use the Microsoft Foundry Skill to create a public Foundry project for this project. Use the resource group rg-tailspin-toys and project name tailspin-toys. + ``` + + ![Create a public Foundry project](../_images/cli-8-create-foundry-project.png) + +1. After the project is ready, ask Copilot to recommend a model: + + ```text + Use the Microsoft Foundry Skill to recommend two or three current chat models available in the tailspin-toys project for the Backer Concierge acceptance criteria in the issue titled "Add a Backer Concierge assistant for catalog questions". Prioritize low latency, instruction following, grounding fidelity, available quota, and models that aren't approaching retirement. There is no complex math or multi-step planning. Explain the tradeoffs and wait for me to choose a model from the recommended options. + ``` + + Copilot may prompt you to select a model from the recommended options. + + ![Select a model from the recommended options](../_images/cli-8-select-foundry-model.png) + + We'll continue with `gpt-5.4-mini` in the remaining steps, but availability and quota vary by region. + +1. Ask Copilot to deploy your selection. *Insert your selection*: + + ```text + Deploy the model we selected to the tailspin-toys Foundry project and use the model name as the deployment name. Choose an SKU with available quota, ask me to confirm the capacity before deployment. After deployment, show me the deployment status. + ``` + + ![Deploy the selected model](../_images/cli-8-deploy-foundry-model.png) + +> [!TIP] +> Model availability changes over time. Use the model that Copilot confirms is available in your project rather than substituting a hardcoded model. + +## Test the deployed model + +You deployed the model based on Copilot's recommendation. Before building the hosted agent, test whether the model follows the Backer Concierge grounding rules. This tests the model with the intended instructions and catalog context before any agent code or configuration is involved. + +First, grant your signed-in account the **Foundry Project Manager** role for hosted-agent development (later in the workshop), and the **Cognitive Services OpenAI User** role for direct model inference. Replace `` with the Foundry account name reported when the project was created, then in a new terminal, run: + +Set the account, project, and user values: + +```bash +SUBSCRIPTION_ID=$(az account show --query id --output tsv) +USER_OBJECT_ID=$(az ad signed-in-user show --query id --output tsv) +FOUNDRY_ACCOUNT="" +ACCOUNT_SCOPE=$(az cognitiveservices account show --name "$FOUNDRY_ACCOUNT" --resource-group rg-tailspin-toys --query id --output tsv) +PROJECT_SCOPE="$ACCOUNT_SCOPE/projects/tailspin-toys" +``` + +Assign the **Foundry Project Manager** role: + +```bash +az role assignment create \ + --assignee-object-id "$USER_OBJECT_ID" \ + --assignee-principal-type User \ + --role "Foundry Project Manager" \ + --scope "$PROJECT_SCOPE" \ + --subscription "$SUBSCRIPTION_ID" +``` + +Assign the **Cognitive Services OpenAI User** role: + +```bash +az role assignment create \ + --assignee-object-id "$USER_OBJECT_ID" \ + --assignee-principal-type User \ + --role "Cognitive Services OpenAI User" \ + --scope "$ACCOUNT_SCOPE" \ + --subscription "$SUBSCRIPTION_ID" +``` + +Back in Copilot CLI, enter: + +```text +Use the Microsoft Foundry Skill to test my deployed model directly in the tailspin-toys project without creating an agent. Ground it with content from @db/catalog.json and ask: "I love puzzle games about tracking down bugs. What should I back, and how much funding has it raised?" Show me the response and useful metadata like tokens used and response time (only if you can obtain it). Do not change files or create resources. +``` + +![Foundry model response recommending a real catalog game and noting that funding data isn't available](../_images/cli-8-foundry-agent-response.png) + +The response should recommend only a real game from the catalog, use the correct catalog details, and explain that funding information isn't available. If the model invents a title, game details, or a funding total, compare another recommended model before continuing. + +> [!NOTE] +> This step tests only your deployed model with temporary instructions and catalog context. It doesn't test an agent. You will repeat the test after scaffolding to validate the hosted agent's code, packaging, and conversation behavior. + +## Scaffold the Backer Concierge Agent + +Now ask the Microsoft Foundry Skill to scaffold the hosted agent inside the existing Tailspin Toys repository. + +1. Enter the following prompt in Copilot CLI: + + ```text + Use the Microsoft Foundry Skill to scaffold a hosted Backer Concierge in this existing repository using the project and model deployment we selected. Start from the Python 3.13 Basic hosted-agent sample, use Microsoft Agent Framework with the Responses API and code deployment, and keep the agent in agent/backer-concierge. Keep one azure.yaml at the repository root with a service using host: azure.ai.agent. + + Ground every answer in db/catalog.json. Never invent games, publishers, ratings, funding totals, backer counts, pledge tiers, prices, player counts, play times, or release dates. Ask one short clarifying question when a request is vague and preserve conversation context. Ensure the catalog is copied into the deployable service during preparation so the deployed agent never depends on a file outside its service directory. Add focused tests for catalog loading and grounding behavior. + + Scaffold and test locally, but do not deploy the hosted agent yet. Stop and ask me to authenticate if needed. + ``` + +1. Follow the session for questions about the Foundry project, model deployment, agent name, or environment. + +1. When Copilot finishes, inspect the changes: + + ```text + /diff + ``` + + Confirm that: + + - `azure.yaml` contains a service with `host: azure.ai.agent`. + - the service points to `agent/backer-concierge` + - the deployed service package includes its own generated copy of the catalog. + - one script or build step refreshes that copy from `db/catalog.json` instead of maintaining two hand-edited catalogs. + - the agent uses the selected model deployment and the Responses API. + - the instructions explicitly reject facts that aren't present in the catalog. + - no credentials, access tokens, `.env` files, or `.azure` environment files are staged for commit. + + Use the following structure as the checkpoint after scaffolding: + + ```text + tailspin-toys/ + ├── azure.yaml + ├── agent/ + │ └── backer-concierge/ + │ ├── catalog.json + │ └── requirements.txt + ├── db/ + │ └── catalog.json + └── src/ + ``` + + > [!IMPORTANT] + > `azd deploy` packages the hosted-agent service directory. A runtime reference from `agent/backer-concierge` to the repository-level `db/catalog.json` can work locally and then fail after deployment. Verify that the generated copy is available in the `agent/backer-concierge/` directory before deployment. + +1. Ask Copilot to run the focused tests and inspect the generated configuration before starting the service: + + ```text + Run the focused Backer Concierge tests. Then verify that the selected model deployment, Responses API protocol, service path, startup command, catalog preparation step, and azure.ai.agent host configuration are consistent. Fix only problems in this hosted-agent project and rerun the failed checks. + ``` + + Don't continue until the focused tests pass. + + ![Verify the agent scaffolding](../_images/cli-8-verify-generated-agent.png) + +## Test the agent locally + +The local agent service occupies its terminal while it runs. Keep Copilot CLI open in your current terminal and start the agent from a second terminal. + +1. Open another terminal by selecting Ctrl+\`. +2. From the Tailspin Toys repository root, run: + + ```bash + azd ai agent run + ``` + + The first local run creates a Python environment, installs dependencies, and starts the hosted agent. Leave this terminal running. + +3. Return to Copilot CLI in the first terminal and enter: + + ```text + Test the running Backer Concierge through its Responses API. Run each acceptance prompt below, preserve the response ID for the two-turn conversation test, and compare every response with the expected behavior. Show a concise pass or fail table and the evidence for any failure. Do not change code yet. + + 1. "I love puzzle games about tracking down bugs. What should I back?" Expected: only real catalog titles with correct details. + 2. "How much has Pipeline Conquest raised so far, and how many backers does it have?" Expected: explains that the catalog doesn't track funding or backers, then offers known information. + 3. "I need something for four players, about an hour long." Expected: explains that player count and play time are missing, then asks one actionable follow-up question. + 4. "Do you have Wingspan? If not, what's the closest thing you've got?" Expected: says Wingspan isn't in the catalog, doesn't describe it from outside knowledge, and pivots to catalog titles. + 5. "Recommend me something good." Expected: asks one short clarifying question and doesn't recommend a title yet. + 6. "What are your three highest rated games?" Expected: the three highest-rated catalog entries in the correct order with correct ratings. + 7. In one conversation, send "Show me two highly rated strategy games." followed by "Which of those has the higher rating?" Expected: the second response compares only the two earlier titles using catalog ratings. + ``` + + If a test fails, (most likely due to prompt gaps), ask Copilot to fix only the local defect, run the focused tests, and tell you when to restart `azd ai agent run`. Restart the service and rerun the failed acceptance test after each change. + + > [!NOTE] + > If the agent can't connect, confirm that the second terminal is still running the service. + + ![Hosted Agent Deployment tests pass](../_images/cli-8-passing-acceptance-scenarios.png) + +## Deploy the hosted agent + +1. Stop the local service with Ctrl+C after all acceptance tests pass. +1. Return to Copilot CLI and enter: + + ```text + Continue with the Microsoft Foundry Skill workflow. Review the hosted agent for deployment readiness, then deploy it to Foundry Agent Service, show the deployment status and playground link, and invoke it remotely with: "I love puzzle games about tracking down bugs. What should I back?" + ``` + + > [!NOTE] + > If prompted to select an evaluation suite source, choose **No, set it up later** + + ![Hosted Agent Deployment status and playground link](../_images/cli-8-hosted-agent-deployment.png) + +The playground link displayed allows you to interact with the deployed hosted agent on the Microsoft Foundry portal. + +The skill-led workflow uses `azd deploy` to package the service source, resolve dependencies, build it remotely, and publish it to Foundry Agent Service. It uses the Foundry invocation workflow to test the deployed endpoint. + +## Connect the agent to the static site + +Tailspin Toys is fully pre-rendered. Browser code must never call the hosted agent directly or receive Foundry credentials. Add a local Azure Functions **server-side credential boundary** that authenticates to Foundry and returns only the agent response to the browser. + +### Build the server-side proxy + +The `microsoft-foundry` skill owns the hosted-agent workflow, while the broader Azure skills in the same plugin can prepare the local Function project. + +1. In Copilot CLI, enter: + + ```text + Use the Azure skills to add an Azure Functions v4 Node.js and TypeScript project in api with one POST /api/concierge endpoint that invokes my deployed Backer Concierge hosted agent. This Function will run locally only; don't add it to azure.yaml or create Azure deployment infrastructure. Use DefaultAzureCredential with my local Azure sign-in. Keep the HTTP trigger thin, isolate the Foundry client in a unit-testable module, validate and limit request bodies, set explicit timeouts, and return sanitized errors. Store the Foundry project endpoint and agent name in local server-side settings that are excluded from version control. Never return credentials or access tokens to the browser. The Astro site is `output: 'static'` with no dev proxy, so also add a local-only Vite dev-server proxy for /api to the Function's port in astro.config.mjs, so relative /api/concierge requests reach it during `astro dev`. + + For conversation state, generate a high-entropy handle on the server, map it to the Foundry conversation server-side with an expiration, and never expose a raw Foundry conversation or thread identifier. Reject malformed, expired, and unknown handles. Add focused unit tests. + ``` + + ![Azure Functions local proxy setup](../_images/cli-8-azure-functions-proxy.png) + +1. Open another terminal, then start the local Function using the command provided by Copilot. Leave the Function running. + +1. Return to Copilot CLI and ask Copilot to test the local proxy: + + ```text + Send a request to the local /api/concierge endpoint asking "Which games are under $30?" and show me the sanitized JSON response. Confirm that the request reaches the deployed Backer Concierge through DefaultAzureCredential. + ``` + + The response should explain that the catalog doesn't contain prices. It must not contain a Foundry token, credential, project endpoint, raw Foundry conversation identifier, or stack trace. + + ![Sanitized JSON response from the local concierge endpoint](../_images/cli-8-sanitized-json-response.png) + +### Build the chat widget + +1. Ask Copilot to create the site integration: + + ```text + Add an accessible Backer Concierge chat widget as an Astro component and render it site-wide from Layout.astro. It should POST to /api/concierge and thread the conversation using the returned opaque conversation handle, follow the dark theme in style.instructions.md, support Escape to close, and include data-testid attributes. + ``` + +1. Keep the local Function running and start the Astro site in another terminal using the command provided by Copilot. + +1. Return to Copilot CLI. The Playwright MCP server you added in [Exercise 4][playwright-lesson] is already available. Ask Copilot to test the widget: + + ```text + Use the Playwright MCP server to test the Backer Concierge widget end to end in the running Tailspin Toys site. Verify its core chat flow, conversation continuity, accessibility, error handling, grounding boundaries, and secure use of the local proxy. Report the results and include evidence for any failures. + ``` + + ![Screenshot of the Backer Concierge widget in the Tailspin Toys site](../_images/cli-8-backer-concierge-widget.png) + +## Clean up your resources + +When you're done experimenting, remove the resources to avoid unwanted costs. + +1. Exit Copilot CLI and run: + + ```bash + azd down --purge + ``` + +1. After `azd down`, if the dedicated workshop resource group still exists, verify its name and contents before running: + + ```bash + az group delete --name rg-tailspin-toys --yes --no-wait + ``` + +## Summary and next steps + +You took a feature brief from an idea to a deployed, product-integrated AI agent. You: + +- installed the Azure and Microsoft Foundry Skills and used the tools from GitHub Copilot CLI. +- created a Foundry project and selected a model from the feature requirements and acceptance criteria. +- used the Microsoft Foundry Skill to scaffold and configure a hosted agent. +- tested grounding and conversation behavior through the local Responses API. +- deployed and tested the agent in Foundry Agent Service. +- created a locally running Azure Functions proxy to call the Foundry Agent Service. +- added and verified an accessible chat widget in Tailspin Toys. + +Continue to [Exercise 9 - Review and next steps][next-lesson]. + +## Resources + +- [Azure Skills Plugin][azure-skills] +- [Use the Microsoft Foundry Skill in coding agents][foundry-skill] +- [Deploy your first hosted agent with the Microsoft Foundry Skill][hosted-agent-quickstart] +- [Hosted agent permissions][hosted-agent-permissions] + +--- + +| [← Previous lesson: Slash commands][previous-lesson] | [Next lesson: Review and next steps →][next-lesson] | +| :-- | --: | + +[previous-lesson]: ../7-slash-commands/ +[next-lesson]: ../9-review/ +[playwright-lesson]: ../4-mcp/ +[azure-free]: https://azure.microsoft.com/pricing/purchase-options/azure-account +[azure-students]: https://azure.microsoft.com/free/students +[install-azure-cli]: https://learn.microsoft.com/cli/azure/install-azure-cli +[install-azd]: https://learn.microsoft.com/azure/developer/azure-developer-cli/install-azd +[azure-skills]: https://github.com/microsoft/azure-skills#github-copilot-cli +[foundry-skill]: https://learn.microsoft.com/azure/foundry/how-to/develop/use-microsoft-foundry-skill?tabs=copilot-cli +[hosted-agent-quickstart]: https://learn.microsoft.com/azure/foundry/agents/quickstarts/quickstart-hosted-agent?pivots=foundry-skills +[hosted-agent-permissions]: https://learn.microsoft.com/azure/foundry/agents/concepts/hosted-agent-permissions diff --git a/docs/cli/8-review.md b/docs/cli/9-review.md similarity index 94% rename from docs/cli/8-review.md rename to docs/cli/9-review.md index c85138c5..7d80db13 100644 --- a/docs/cli/8-review.md +++ b/docs/cli/9-review.md @@ -1,5 +1,5 @@ --- -title: "Exercise 8 - Review and Next Steps" +title: "Exercise 9 - Review and Next Steps" authors: - geektrainer lastUpdated: 2026-06-30 @@ -13,6 +13,8 @@ Over the last several exercises, you explored some of the most common use cases - calling custom agents for advanced and more complex tasks. - using slash commands to manage your session, and optionally bridging back to cloud agent via `/delegate`. +If you haven't yet, consider the [optional Microsoft Foundry lesson][foundry-lesson] before you finish, which builds a catalog-grounded hosted agent on top of the Tailspin Toys site. + Let's talk about some slash commands, best practices, and next steps. ## Slash commands @@ -61,6 +63,7 @@ If you'd like to explore more of the GitHub Copilot ecosystem, check out the [VS - [MCP Specification][mcp-spec] [previous-lesson]: ../7-slash-commands/ +[foundry-lesson]: ../8-foundry-agent/ [about-copilot-cli]: https://docs.github.com/copilot/concepts/agents/about-copilot-cli [using-copilot-cli]: https://docs.github.com/copilot/how-tos/use-copilot-agents/use-copilot-cli [awesome-copilot]: https://github.com/github/awesome-copilot diff --git a/docs/cli/README.md b/docs/cli/README.md index 2ca8e6f9..7cb6a4a6 100644 --- a/docs/cli/README.md +++ b/docs/cli/README.md @@ -8,12 +8,12 @@ lastUpdated: 2026-06-30 **[GitHub Copilot CLI](https://docs.github.com/copilot/concepts/agents/about-copilot-cli)** puts GitHub Copilot in your terminal as an agentic coding assistant. It explores codebases, generates code, runs commands, and connects to external tools — all from the command line, so you can stay in the flow without switching to a graphical editor. -Across these exercises you'll install and authenticate Copilot CLI, then give it project context with custom instructions before using plan mode to generate a feature deliberately. You'll connect the Playwright MCP server to test that feature in a real browser, then extend Copilot with reusable agent skills and custom agents. Finally, you'll explore slash commands for managing context, models, and sharing, and wrap up with a review of what you've built. +Across these exercises you'll install and authenticate Copilot CLI, then give it project context with custom instructions before using plan mode to generate a feature deliberately. You'll connect the Playwright MCP server to test that feature in a real browser, then extend Copilot with reusable agent skills and custom agents. Finally, you'll explore slash commands for managing context, models, and sharing a wrapup of what you've built. You can also explore an optional exercise that uses the Microsoft Foundry Skill to build and deploy a hosted agent. ## Exercises | Exercise | Topic | Description | -|----------|-------|-------------| +| -------- | ----- | ----------- | | [0. Prerequisites][ex0] | Setup | Create your repository and codespace | | [1. Installing Copilot CLI][ex1] | Installation | Install and authenticate Copilot CLI | | [2. Custom instructions][ex2] | Context | Add an instruction and see how Copilot CLI follows it | @@ -22,7 +22,8 @@ Across these exercises you'll install and authenticate Copilot CLI, then give it | [5. Agent Skills][ex5] | Skills | Enhance Copilot with specialized skills | | [6. Custom Agents][ex6] | Agents | Review and use custom agents | | [7. Slash Commands][ex7] | CLI Features | Explore context, models, sharing, and optional delegation to cloud agent | -| [8. Review][ex8] | Summary | Review key concepts and next steps | +| [8. Build a Backer Concierge AI Agent (Optional)][foundry] | Hosted agents | Build and deploy a catalog-grounded Backer Concierge | +| [9. Review][ex9] | Summary | Review key concepts and next steps | ## Prerequisites @@ -50,5 +51,6 @@ Before attending this workshop, please ensure you have: [ex5]: 5-agent-skills/ [ex6]: 6-custom-agents/ [ex7]: 7-slash-commands/ -[ex8]: 8-review/ +[foundry]: 8-foundry-agent/ +[ex9]: 9-review/ [callout-student-plan-education]: https://github.com/education/students diff --git a/docs/es-es/cli/7-slash-commands.md b/docs/es-es/cli/7-slash-commands.md index b3e1bbe9..281493b4 100644 --- a/docs/es-es/cli/7-slash-commands.md +++ b/docs/es-es/cli/7-slash-commands.md @@ -157,7 +157,7 @@ Usar comandos de barra en Copilot CLI te permite configurarlo, compartir sesione - `/model` para explorar la lista de modelos disponibles y seleccionar uno nuevo si así lo deseas. - `/delegate` como puente opcional hacia cloud agent. -Por supuesto, hay más comandos de barra disponibles y mucho más por explorar con Copilot CLI. Vamos a cerrar este recorrido [repasando lo que hemos aprendido][next-lesson] y viendo algunos próximos pasos para seguir aprendiendo. +Por supuesto, hay más comandos de barra disponibles y mucho más por explorar con Copilot CLI. Si quieres ir más allá, la [lección opcional de Microsoft Foundry][foundry-lesson] te guía para compilar un agente hospedado sobre el catálogo de Tailspin. Si no, vamos a cerrar este recorrido [repasando lo que hemos aprendido][next-lesson] y viendo algunos próximos pasos para seguir aprendiendo. ## Recursos @@ -168,7 +168,8 @@ Por supuesto, hay más comandos de barra disponibles y mucho más por explorar c - [Seleccionar modelos en Copilot CLI][selecting-models] [previous-lesson]: ../6-custom-agents/ -[next-lesson]: ../8-review/ +[next-lesson]: ../9-review/ +[foundry-lesson]: ../8-foundry-agent/ [using-copilot-cli]: https://docs.github.com/copilot/how-tos/use-copilot-agents/use-copilot-cli [about-copilot-cli]: https://docs.github.com/copilot/concepts/agents/about-copilot-cli [about-cloud-agent]: https://docs.github.com/copilot/concepts/agents/cloud-agent/about-cloud-agent diff --git a/docs/es-es/cli/8-review.md b/docs/es-es/cli/9-review.md similarity index 100% rename from docs/es-es/cli/8-review.md rename to docs/es-es/cli/9-review.md diff --git a/docs/es-es/cli/README.md b/docs/es-es/cli/README.md index aca3c5c9..f1c9b436 100644 --- a/docs/es-es/cli/README.md +++ b/docs/es-es/cli/README.md @@ -22,7 +22,8 @@ A lo largo de estos ejercicios instalarás y autenticarás Copilot CLI, y despu | [5. Habilidades de agente][ex5] | Habilidades | Mejora Copilot con habilidades especializadas | | [6. Agentes personalizados][ex6] | Agentes | Revisa y usa agentes personalizados | | [7. Comandos de barra][ex7] | Funciones de CLI | Explora el contexto, los modelos, el uso compartido y la delegación opcional al agente en la nube | -| [8. Repaso][ex8] | Resumen | Repasa los conceptos clave y los próximos pasos | +| [8. Compilar un agente de IA Backer Concierge (opcional)][foundry] | Agentes hospedados | Compila e implementa un Backer Concierge basado en el catálogo | +| [9. Repaso][ex9] | Resumen | Repasa los conceptos clave y los próximos pasos | ## Requisitos previos @@ -52,4 +53,5 @@ Antes de asistir a este taller, asegúrate de tener: [ex5]: 5-agent-skills/ [ex6]: 6-custom-agents/ [ex7]: 7-slash-commands/ -[ex8]: 8-review/ +[foundry]: 8-foundry-agent/ +[ex9]: 9-review/ diff --git a/docs/ja-jp/cli/7-slash-commands.md b/docs/ja-jp/cli/7-slash-commands.md index b884222d..ed60b514 100644 --- a/docs/ja-jp/cli/7-slash-commands.md +++ b/docs/ja-jp/cli/7-slash-commands.md @@ -156,7 +156,7 @@ Copilot CLI の slash command を使うと、設定の変更、セッション - `/model` で利用可能なモデルの一覧を確認し、必要に応じて別のモデルを選択する。 - `/delegate` が cloud agent への任意の橋渡しになることを学ぶ。 -利用できる slash command はもちろんこれ以外にもあり、Copilot CLI にはまだ多くの機能があります。最後に、[ここまでに学んだことを振り返り][next-lesson]、学習を続けるための次のステップを確認して締めくくりましょう。 +利用できる slash command はもちろんこれ以外にもあり、Copilot CLI にはまだ多くの機能があります。さらに進みたい場合は、[オプションの Microsoft Foundry レッスン][foundry-lesson]で Tailspin カタログ上にホスト型エージェントを構築する方法を学べます。そうでなければ、最後に[ここまでに学んだことを振り返り][next-lesson]、学習を続けるための次のステップを確認して締めくくりましょう。 ## リソース @@ -167,7 +167,8 @@ Copilot CLI の slash command を使うと、設定の変更、セッション - [Copilot CLI でモデルを選択する][selecting-models] [previous-lesson]: ../6-custom-agents/ -[next-lesson]: ../8-review/ +[next-lesson]: ../9-review/ +[foundry-lesson]: ../8-foundry-agent/ [using-copilot-cli]: https://docs.github.com/copilot/how-tos/use-copilot-agents/use-copilot-cli [about-copilot-cli]: https://docs.github.com/copilot/concepts/agents/about-copilot-cli [about-cloud-agent]: https://docs.github.com/copilot/concepts/agents/cloud-agent/about-cloud-agent diff --git a/docs/ja-jp/cli/8-review.md b/docs/ja-jp/cli/9-review.md similarity index 100% rename from docs/ja-jp/cli/8-review.md rename to docs/ja-jp/cli/9-review.md diff --git a/docs/ja-jp/cli/README.md b/docs/ja-jp/cli/README.md index 2ab725f8..cf98f744 100644 --- a/docs/ja-jp/cli/README.md +++ b/docs/ja-jp/cli/README.md @@ -22,7 +22,8 @@ lastUpdated: 2026-06-30 | [5. エージェント スキル][ex5] | スキル | 専門スキルで Copilot を強化する | | [6. カスタム エージェント][ex6] | エージェント | カスタム エージェントを確認して使用する | | [7. スラッシュ コマンド][ex7] | CLI 機能 | コンテキスト、モデル、共有、cloud agent への任意の委任を確認する | -| [8. 振り返り][ex8] | まとめ | 重要な概念と次のステップを確認する | +| [8. Backer Concierge AI エージェントの構築 (オプション)][foundry] | ホスト型エージェント | カタログに基づいた Backer Concierge を構築してデプロイする | +| [9. 振り返り][ex9] | まとめ | 重要な概念と次のステップを確認する | ## 前提条件 @@ -52,4 +53,5 @@ lastUpdated: 2026-06-30 [ex5]: 5-agent-skills/ [ex6]: 6-custom-agents/ [ex7]: 7-slash-commands/ -[ex8]: 8-review/ +[foundry]: 8-foundry-agent/ +[ex9]: 9-review/ diff --git a/docs/ko-kr/cli/7-slash-commands.md b/docs/ko-kr/cli/7-slash-commands.md index c01136b0..088c5be3 100644 --- a/docs/ko-kr/cli/7-slash-commands.md +++ b/docs/ko-kr/cli/7-slash-commands.md @@ -156,7 +156,7 @@ Copilot CLI의 slash commands를 사용하면 구성을 변경하고, 세션을 - `/model`로 사용 가능한 모델 목록을 살펴보고 원한다면 새 모델을 선택할 수 있음을 확인했습니다. - `/delegate`를 cloud agent로 연결하는 선택적 브리지로 학습했습니다. -물론 더 많은 slash commands가 있으며, Copilot CLI로 탐색할 내용도 더 많습니다. 마지막으로 [학습한 내용을 검토하고][next-lesson] 학습을 계속하기 위한 다음 단계를 살펴보며 여정을 마무리하겠습니다. +물론 더 많은 slash commands가 있으며, Copilot CLI로 탐색할 내용도 더 많습니다. 더 나아가고 싶다면, [선택적 Microsoft Foundry 레슨][foundry-lesson]에서 Tailspin 카탈로그 위에 호스트된 에이전트를 빌드하는 방법을 안내합니다. 그렇지 않다면, 마지막으로 [학습한 내용을 검토하고][next-lesson] 학습을 계속하기 위한 다음 단계를 살펴보며 여정을 마무리하겠습니다. ## 리소스 @@ -167,7 +167,8 @@ Copilot CLI의 slash commands를 사용하면 구성을 변경하고, 세션을 - [Copilot CLI에서 모델 선택하기][selecting-models] [previous-lesson]: ../6-custom-agents/ -[next-lesson]: ../8-review/ +[next-lesson]: ../9-review/ +[foundry-lesson]: ../8-foundry-agent/ [using-copilot-cli]: https://docs.github.com/copilot/how-tos/use-copilot-agents/use-copilot-cli [about-copilot-cli]: https://docs.github.com/copilot/concepts/agents/about-copilot-cli [about-cloud-agent]: https://docs.github.com/copilot/concepts/agents/cloud-agent/about-cloud-agent diff --git a/docs/ko-kr/cli/8-review.md b/docs/ko-kr/cli/9-review.md similarity index 100% rename from docs/ko-kr/cli/8-review.md rename to docs/ko-kr/cli/9-review.md diff --git a/docs/ko-kr/cli/README.md b/docs/ko-kr/cli/README.md index 82f069d0..d2fe259e 100644 --- a/docs/ko-kr/cli/README.md +++ b/docs/ko-kr/cli/README.md @@ -22,7 +22,8 @@ lastUpdated: 2026-06-30 | [5. 에이전트 스킬][ex5] | 스킬 | 특화된 스킬로 Copilot을 강화합니다 | | [6. 커스텀 에이전트][ex6] | 에이전트 | 커스텀 에이전트를 검토하고 사용합니다 | | [7. 슬래시 명령][ex7] | CLI 기능 | 컨텍스트, 모델, 공유, 그리고 선택적으로 cloud agent 위임을 살펴봅니다 | -| [8. 검토][ex8] | 요약 | 핵심 개념과 다음 단계를 검토합니다 | +| [8. Backer Concierge AI 에이전트 빌드 (선택 사항)][foundry] | 호스트된 에이전트 | 카탈로그 기반 Backer Concierge를 빌드하고 배포합니다 | +| [9. 검토][ex9] | 요약 | 핵심 개념과 다음 단계를 검토합니다 | ## 사전 준비 @@ -52,4 +53,5 @@ lastUpdated: 2026-06-30 [ex5]: 5-agent-skills/ [ex6]: 6-custom-agents/ [ex7]: 7-slash-commands/ -[ex8]: 8-review/ +[foundry]: 8-foundry-agent/ +[ex9]: 9-review/ diff --git a/docs/pt-br/cli/7-slash-commands.md b/docs/pt-br/cli/7-slash-commands.md index b37b4de0..f74d06d7 100644 --- a/docs/pt-br/cli/7-slash-commands.md +++ b/docs/pt-br/cli/7-slash-commands.md @@ -157,7 +157,7 @@ Usar comandos de barra no Copilot CLI permite configurá-lo, compartilhar sessõ - `/model` para explorar a lista de modelos disponíveis e selecionar outro, se quiser. - `/delegate` como uma ponte opcional para o agente de nuvem. -É claro que há mais comandos de barra disponíveis e muito mais para explorar no Copilot CLI. Vamos encerrar essa jornada [revendo o que aprendemos][next-lesson] e vendo alguns próximos passos para continuar aprendendo. +É claro que há mais comandos de barra disponíveis e muito mais para explorar no Copilot CLI. Se quiser ir além, a [lição opcional de Microsoft Foundry][foundry-lesson] mostra como criar um agente hospedado com base no catálogo do Tailspin. Caso contrário, vamos encerrar essa jornada [revendo o que aprendemos][next-lesson] e vendo alguns próximos passos para continuar aprendendo. ## Recursos @@ -168,7 +168,8 @@ Usar comandos de barra no Copilot CLI permite configurá-lo, compartilhar sessõ - [Selecionar modelos no Copilot CLI][selecting-models] [previous-lesson]: ../6-custom-agents/ -[next-lesson]: ../8-review/ +[next-lesson]: ../9-review/ +[foundry-lesson]: ../8-foundry-agent/ [using-copilot-cli]: https://docs.github.com/copilot/how-tos/use-copilot-agents/use-copilot-cli [about-copilot-cli]: https://docs.github.com/copilot/concepts/agents/about-copilot-cli [about-cloud-agent]: https://docs.github.com/copilot/concepts/agents/cloud-agent/about-cloud-agent diff --git a/docs/pt-br/cli/8-review.md b/docs/pt-br/cli/9-review.md similarity index 100% rename from docs/pt-br/cli/8-review.md rename to docs/pt-br/cli/9-review.md diff --git a/docs/pt-br/cli/README.md b/docs/pt-br/cli/README.md index 0844114e..5e9c22a8 100644 --- a/docs/pt-br/cli/README.md +++ b/docs/pt-br/cli/README.md @@ -22,7 +22,8 @@ Ao longo destas lições, você instalará e autenticará o Copilot CLI, depois | [5. Skills de agente][ex5] | Skills | Aprimore o Copilot com skills especializadas | | [6. Agentes personalizados][ex6] | Agentes | Revise e use agentes personalizados | | [7. Comandos de barra][ex7] | Recursos da CLI | Explore contexto, modelos, compartilhamento e a delegação opcional para o agente de nuvem | -| [8. Revisão][ex8] | Resumo | Revise os principais conceitos e os próximos passos | +| [8. Criar um agente de IA Backer Concierge (opcional)][foundry] | Agentes hospedados | Crie e implante um Backer Concierge baseado no catálogo | +| [9. Revisão][ex9] | Resumo | Revise os principais conceitos e os próximos passos | ## Pré-requisitos @@ -50,5 +51,6 @@ Antes de participar deste workshop, verifique se você tem: [ex5]: 5-agent-skills/ [ex6]: 6-custom-agents/ [ex7]: 7-slash-commands/ -[ex8]: 8-review/ +[foundry]: 8-foundry-agent/ +[ex9]: 9-review/ [callout-student-plan-education]: https://github.com/education/students diff --git a/docs/zh-cn/cli/7-slash-commands.md b/docs/zh-cn/cli/7-slash-commands.md index 15262f20..fd9f9663 100644 --- a/docs/zh-cn/cli/7-slash-commands.md +++ b/docs/zh-cn/cli/7-slash-commands.md @@ -157,7 +157,7 @@ lastUpdated: 2026-06-30 - 使用 `/model` 查看可用模型列表,并在需要时选择新的模型。 - 了解了 `/delegate` 作为连接 cloud agent 的可选桥梁。 -当然,还有更多斜杠命令可用,也还有更多 Copilot CLI 功能值得探索。最后通过[回顾已学内容][next-lesson]以及后续学习方向,为这段旅程收尾。 +当然,还有更多斜杠命令可用,也还有更多 Copilot CLI 功能值得探索。如果你想更进一步,[可选的 Microsoft Foundry 课程][foundry-lesson]将带你在 Tailspin 目录之上构建一个托管智能体。否则,最后通过[回顾已学内容][next-lesson]以及后续学习方向,为这段旅程收尾。 ## 资源 @@ -168,7 +168,8 @@ lastUpdated: 2026-06-30 - [在 Copilot CLI 中选择模型][selecting-models] [previous-lesson]: ../6-custom-agents/ -[next-lesson]: ../8-review/ +[next-lesson]: ../9-review/ +[foundry-lesson]: ../8-foundry-agent/ [using-copilot-cli]: https://docs.github.com/copilot/how-tos/use-copilot-agents/use-copilot-cli [about-copilot-cli]: https://docs.github.com/copilot/concepts/agents/about-copilot-cli [about-cloud-agent]: https://docs.github.com/copilot/concepts/agents/cloud-agent/about-cloud-agent diff --git a/docs/zh-cn/cli/8-review.md b/docs/zh-cn/cli/9-review.md similarity index 100% rename from docs/zh-cn/cli/8-review.md rename to docs/zh-cn/cli/9-review.md diff --git a/docs/zh-cn/cli/README.md b/docs/zh-cn/cli/README.md index 5d6513c4..8c640d62 100644 --- a/docs/zh-cn/cli/README.md +++ b/docs/zh-cn/cli/README.md @@ -22,7 +22,8 @@ lastUpdated: 2026-06-30 | [5. 智能体技能][ex5] | 技能 | 用专门的技能增强 Copilot | | [6. 自定义智能体][ex6] | 智能体 | 查看并使用自定义智能体 | | [7. 斜杠命令][ex7] | CLI 功能 | 探索上下文、模型、共享,以及可选的委托给 cloud agent | -| [8. 回顾][ex8] | 总结 | 回顾关键概念和后续步骤 | +| [8. 构建 Backer Concierge AI 智能体(可选)][foundry] | 托管智能体 | 构建并部署基于目录的 Backer Concierge | +| [9. 回顾][ex9] | 总结 | 回顾关键概念和后续步骤 | ## 先决条件 @@ -52,4 +53,5 @@ lastUpdated: 2026-06-30 [ex5]: 5-agent-skills/ [ex6]: 6-custom-agents/ [ex7]: 7-slash-commands/ -[ex8]: 8-review/ +[foundry]: 8-foundry-agent/ +[ex9]: 9-review/ diff --git a/website/astro.config.mjs b/website/astro.config.mjs index 2abc22db..0395b4c4 100644 --- a/website/astro.config.mjs +++ b/website/astro.config.mjs @@ -77,7 +77,8 @@ export default defineConfig({ { label: '5. Agent skills', link: '/cli/5-agent-skills/' }, { label: '6. Custom agents', link: '/cli/6-custom-agents/' }, { label: '7. Slash commands', link: '/cli/7-slash-commands/' }, - { label: '8. Review', link: '/cli/8-review/' }, + { label: '8. Build a Backer Concierge AI Agent (Optional)', link: '/cli/8-foundry-agent/' }, + { label: '9. Review', link: '/cli/9-review/' }, ], }, {