From 9a50a9feb1d8d9c8fb3ae2731d82088cf92d6c49 Mon Sep 17 00:00:00 2001 From: Daniel Scott-Raynsford Date: Sat, 26 Jul 2025 11:43:20 +1200 Subject: [PATCH 1/9] CHANGE: update devcontainer and add GitHub Copilot docs - Added GitHub Copilot and related extensions to the devcontainer configuration. - Created a new documentation page for using AVM with GitHub Copilot. - Included setup instructions and productivity tips for AVM module development. --- .devcontainer/devcontainer.json | 5 ++- .../usage/quickstart/github-copilot.md | 44 +++++++++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 docs/content/usage/quickstart/github-copilot.md diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index f3d41d7e6..ddfb44dd5 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -21,7 +21,10 @@ "eliostruyf.vscode-hugo-themer", "kaellarkin.hugo-shortcode-syntax", "davidanson.vscode-markdownlint", - "streetsidesoftware.code-spell-checker" + "streetsidesoftware.code-spell-checker", + "GitHub.codespaces", + "GitHub.copilot", + "GitHub.copilot-chat" ] } }, diff --git a/docs/content/usage/quickstart/github-copilot.md b/docs/content/usage/quickstart/github-copilot.md new file mode 100644 index 000000000..9c9332772 --- /dev/null +++ b/docs/content/usage/quickstart/github-copilot.md @@ -0,0 +1,44 @@ +--- +draft: true +title: Using AVM with GitHub Copilot +linktitle: Using AVM with GitHub Copilot +type: default +weight: 3 +description: How to use GitHub Copilot to accelerate creation and maintainance of Azure Verified Modules (AVM) for both Bicep and Terraform. +--- + +{{% notice style="note" %}} + +This page is a work in progress and will be updated as we improve & finalize the content. Please check back regularly for updates. + +{{% /notice %}} + +## Introduction + +When developing Azure solutions using Azure Verified Modules (AVM), there are several approaches you can take: + +1. Hand-coding the solution from scratch +1. Copying existing AVM code snippets and examples +1. Using GitHub Copilot to assist in the end-to-end creation of your AVM infrastructure code + +Using GitHub Copilot in Visual Studio Code (VS Code) will have a significant benefit in productivity across all three of these areas. + +This page will help you use GitHub Copilot in Visual Studio Code to get an AI accelerated benefit when building your scenarios. It will also cover common concepts, approaches and tips that will help you get the most out of GitHub Copilot when working with AVM modules for both Bicep and Terraform. + +> [!NOTE] +> We recommend using Visual Studio Code. This guide focuses on GitHub Copilot & GitHub Copilot Chat in Visual Studio Code. Many of the concepts and approaches may be available in other IDEs that support GitHub Copilot, such as JetBrains IDEs and Visual Studio. But at the time of writing this Guide, Visual Studio Code provides the most complete feature set for GitHub Copilot users. + +## Getting Setup + +To get started with using GitHub Copilot for AVM module development, you'll need to have the following prerequisites in place: + +1. [Visual Studio Code](https://code.visualstudio.com/download) or [Visual Studio Code Insiders](https://code.visualstudio.com/insiders/) installed. + +> [!NOTE] +> You can also use GitHub Codespaces to work on thees repos without needing to install anything locally. For example, open the [https://github.com/Azure/bicep-registry-modules](https://github.com/Azure/bicep-registry-modules) repository in GitHub Codespaces by clicking the button below: +> [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/Azure/bicep-registry-modules) + +1. GitHub Copilot extension installed and configured +1. Basic understanding of AVM modules and their structure + +Topics/concepts that are relevant and applicable for both Bicep and Terraform. From 166122d90749796eafb4d2f328eaef8ff7c37d35 Mon Sep 17 00:00:00 2001 From: Daniel Scott-Raynsford Date: Sat, 26 Jul 2025 11:48:15 +1200 Subject: [PATCH 2/9] CHANGE: update GitHub Copilot usage guidance - Revised introduction to clarify how GitHub Copilot enhances productivity with Azure Verified Modules (AVM). - Expanded list of areas where GitHub Copilot can assist in Infrastructure as Code (IaC) development. --- docs/content/usage/quickstart/github-copilot.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/docs/content/usage/quickstart/github-copilot.md b/docs/content/usage/quickstart/github-copilot.md index 9c9332772..dcfcf6d3b 100644 --- a/docs/content/usage/quickstart/github-copilot.md +++ b/docs/content/usage/quickstart/github-copilot.md @@ -15,11 +15,14 @@ This page is a work in progress and will be updated as we improve & finalize the ## Introduction -When developing Azure solutions using Azure Verified Modules (AVM), there are several approaches you can take: - -1. Hand-coding the solution from scratch -1. Copying existing AVM code snippets and examples -1. Using GitHub Copilot to assist in the end-to-end creation of your AVM infrastructure code +When developing Azure solutions using Azure Verified Modules (AVM), there are several areas that GitHub Copilot can help you be more productive when working with Infrastructure as Code (IaC) for both Bicep and Terraform.: + +1. Creation of your AVM IaC from scratch +1. Copying and adapting existing AVM code snippets and examples +1. Converting non-AVM IaC to use AVM +1. Refactoring existing IaC that uses AVM to use different technologies or architectures, e.g. moving to zero trust architectures. +1. Updating existing AVM modules to use the latest version of the module +1. Creating documentation for your AVM IaC, such as design documentation and architecture diagrams (e.g. Mermaid) Using GitHub Copilot in Visual Studio Code (VS Code) will have a significant benefit in productivity across all three of these areas. From e1ad2d4c4f3b21671f5f357dbb52e5eb69766559 Mon Sep 17 00:00:00 2001 From: Daniel Scott-Raynsford Date: Sat, 26 Jul 2025 12:35:41 +1200 Subject: [PATCH 3/9] CHANGE: enhance GitHub Copilot usage documentation - Updated sections to include detailed usage scenarios for GitHub Copilot with AVM. - Added new topics on configuring MCP servers, adding prompt files, and modes. - Improved clarity and structure for better user guidance. --- .../usage/quickstart/github-copilot.md | 44 ++++++++++++++++--- 1 file changed, 38 insertions(+), 6 deletions(-) diff --git a/docs/content/usage/quickstart/github-copilot.md b/docs/content/usage/quickstart/github-copilot.md index dcfcf6d3b..1796428ce 100644 --- a/docs/content/usage/quickstart/github-copilot.md +++ b/docs/content/usage/quickstart/github-copilot.md @@ -17,12 +17,12 @@ This page is a work in progress and will be updated as we improve & finalize the When developing Azure solutions using Azure Verified Modules (AVM), there are several areas that GitHub Copilot can help you be more productive when working with Infrastructure as Code (IaC) for both Bicep and Terraform.: -1. Creation of your AVM IaC from scratch -1. Copying and adapting existing AVM code snippets and examples -1. Converting non-AVM IaC to use AVM -1. Refactoring existing IaC that uses AVM to use different technologies or architectures, e.g. moving to zero trust architectures. -1. Updating existing AVM modules to use the latest version of the module -1. Creating documentation for your AVM IaC, such as design documentation and architecture diagrams (e.g. Mermaid) +1. [Creation of your AVM IaC from scratch](#creating-avm-iac-from-scratch) +1. [Copying and adapting existing AVM code snippets and examples](#copying-and-adapting-existing-avm-code-snippets) +1. [Converting non-AVM IaC to use AVM](#converting-non-avm-iac-to-use-avm) +1. [Refactoring Existing AVM IaC to Use Different Technologies or Architectures](#refactoring-existing-avm-iac-to-use-different-technologies-or-architectures) +1. [Updating existing AVM modules to use the latest version](#updating-existing-avm-modules-to-use-the-latest-version) +1. [Creating documentation for your AVM IaC](#creating-documentation-for-your-avm-iac) Using GitHub Copilot in Visual Studio Code (VS Code) will have a significant benefit in productivity across all three of these areas. @@ -45,3 +45,35 @@ To get started with using GitHub Copilot for AVM module development, you'll need 1. Basic understanding of AVM modules and their structure Topics/concepts that are relevant and applicable for both Bicep and Terraform. + +### Configuring MCP Servers + +### Adding Prompt Files + +### Adding Modes + +## Using GitHub Copilot with AVM IaC + +### Creating AVM IaC from Scratch + +When starting a new AVM module, you can use GitHub Copilot to help generate the initial structure and boilerplate code. For example, you can start typing a comment or a function name, and GitHub Copilot will suggest completions based on the context of your code. + +### Copying and Adapting Existing AVM Code Snippets + +If you have existing AVM code snippets or examples, you can use GitHub Copilot to help adapt them to your specific needs. For example, you can copy an existing module and start modifying it, and GitHub Copilot will suggest changes based on the context of your modifications. + +### Converting Non-AVM IaC to Use AVM + +If you have existing Infrastructure as Code (IaC) that does not use AVM, you can use GitHub Copilot to help convert it to use AVM. For example, you can start by copying the existing code and then modify it to use AVM modules, and GitHub Copilot will suggest changes based on the context of your modifications. + +### Refactoring Existing AVM IaC to Use Different Technologies or Architectures + +If you need to refactor existing AVM IaC to use different technologies or architectures, GitHub Copilot can help. For example, if you're moving to a zero trust architecture, you can start by modifying the existing code and GitHub Copilot will suggest changes based on the context of your modifications. + +### Updating Existing AVM Modules to Use the Latest Version + +When a new version of an AVM module is released, you can use GitHub Copilot to help update your existing code to use the latest version. For example, you can start by modifying the module version in your code and GitHub Copilot will suggest changes based on the context of your modifications. + +### Creating Documentation for Your AVM IaC + +GitHub Copilot can also help you create documentation for your AVM IaC. For example, you can start by writing a comment or a function name, and GitHub Copilot will suggest documentation based on the context of your code. This can help you create consistent and comprehensive documentation for your AVM modules. From fab158eb27f7661a822ba724e626715ad78becde Mon Sep 17 00:00:00 2001 From: Daniel Scott-Raynsford Date: Sat, 26 Jul 2025 17:07:27 +1200 Subject: [PATCH 4/9] CHANGE: update GitHub Copilot configuration and docs - Added GitHub Copilot Chat and GitHub Copilot for Azure extensions to the devcontainer configuration. - Created a new MCP configuration file for GitHub Copilot. - Updated documentation to reflect changes in setting up the environment for GitHub Copilot. --- .devcontainer/devcontainer.json | 3 +- .vscode/mcp.json | 13 +++++++++ .../usage/quickstart/github-copilot.md | 29 ++++++++++++++++--- 3 files changed, 40 insertions(+), 5 deletions(-) create mode 100644 .vscode/mcp.json diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index ddfb44dd5..fd6da945d 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -24,7 +24,8 @@ "streetsidesoftware.code-spell-checker", "GitHub.codespaces", "GitHub.copilot", - "GitHub.copilot-chat" + "GitHub.copilot-chat", + "ms-azuretools.vscode-azure-github-copilot" ] } }, diff --git a/.vscode/mcp.json b/.vscode/mcp.json new file mode 100644 index 000000000..7cf1a2337 --- /dev/null +++ b/.vscode/mcp.json @@ -0,0 +1,13 @@ +{ + "inputs": [], + "servers": { + "microsoft.docs.mcp": { + "type": "http", + "url": "https://learn.microsoft.com/api/mcp" + }, + "github": { + "url": "https://api.githubcopilot.com/mcp/", + "type": "http" + } + } +} diff --git a/docs/content/usage/quickstart/github-copilot.md b/docs/content/usage/quickstart/github-copilot.md index 1796428ce..b9fa691d6 100644 --- a/docs/content/usage/quickstart/github-copilot.md +++ b/docs/content/usage/quickstart/github-copilot.md @@ -31,7 +31,7 @@ This page will help you use GitHub Copilot in Visual Studio Code to get an AI ac > [!NOTE] > We recommend using Visual Studio Code. This guide focuses on GitHub Copilot & GitHub Copilot Chat in Visual Studio Code. Many of the concepts and approaches may be available in other IDEs that support GitHub Copilot, such as JetBrains IDEs and Visual Studio. But at the time of writing this Guide, Visual Studio Code provides the most complete feature set for GitHub Copilot users. -## Getting Setup +## Setting up your Environment To get started with using GitHub Copilot for AVM module development, you'll need to have the following prerequisites in place: @@ -41,13 +41,34 @@ To get started with using GitHub Copilot for AVM module development, you'll need > You can also use GitHub Codespaces to work on thees repos without needing to install anything locally. For example, open the [https://github.com/Azure/bicep-registry-modules](https://github.com/Azure/bicep-registry-modules) repository in GitHub Codespaces by clicking the button below: > [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/Azure/bicep-registry-modules) -1. GitHub Copilot extension installed and configured -1. Basic understanding of AVM modules and their structure +1. Install and configure the GitHub Copilot and GitHub Copilot Chat extensions, and optional, but recommended the GitHub Copilot for Azure extension. -Topics/concepts that are relevant and applicable for both Bicep and Terraform. + | Extension | Install VS Code | Install VS Code Insiders | + |-----------|-----------------|--------------------------| + | GitHub Copilot | [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect?url=vscode%3Aextension%2FGitHub.copilot) | [![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect?url=vscode-insiders%3Aextension%2FGitHub.copilot) | + | GitHub Copilot Chat | [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect?url=vscode%3Aextension%2FGitHub.copilot-chat) | [![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect?url=vscode-insiders%3Aextension%2FGitHub.copilot-chat) | + | GitHub Copilot for Azure | [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect?url=vscode%3Aextension%2Fms-azuretools.vscode-azure-github-copilot) | [![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect?url=vscode-insiders%3Aextension%2Fms-azuretools.vscode-azure-github-copilot) | + +> [!NOTE] +> If you are using GitHub Codespaces, these extensions are already installed and configured for you. + +1. Open Visual Studio Code or Visual Studio Code Insiders and sign in to GitHub Copilot using your GitHub account. See [Set up Copilot in VS Code](https://code.visualstudio.com/docs/copilot/setup) for more information. + +> [!NOTE] +> Although a GitHub free account is sufficient to use GitHub Copilot to work with AVM, a GitHub Copilot Business or Pro subscription will provide acess to premium models, which enabled more reliably dealing with more complex AVM scenarios. ### Configuring MCP Servers +Now that you've enabled GitHub Copilot, you can give it access to **tools**, such as searching _Microsoft Learn_ or getting _Azure Bicep Best practices_. Some VS Code extentions automatically provide you access to tools when you install them (for example, the [Github Copilot for Azure](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azure-github-copilot) extension. But other tools may be provided by [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) servers. + +You should enable GitHub Copilot to access the following MCP Servers: + +| MCP Server | Description | Install VS Code | Install VS Code Insiders | +|------------|-------------|-----------------|--------------------------| +| Microsoft Docs | Search and retrieve content from Microsoft Learn, Azure documentation, and official Microsoft technical resources. | [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](vscode:mcp/install?%7B%22name%22%3A%22microsoft-docs%22%2C%22gallery%22%3Atrue%2C%22url%22%3A%22https%3A%2F%2Flearn.microsoft.com%2Fapi%2Fmcp%22%7D) | [![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](vscode-insiders:mcp/install?%7B%22name%22%3A%22microsoft-docs%22%2C%22gallery%22%3Atrue%2C%22url%22%3A%22https%3A%2F%2Flearn.microsoft.com%2Fapi%2Fmcp%22%7D) | + +There are many other MCP Servers that you can configure GitHub Copilot to use, such as [GitHub](vscode:mcp/install?%7B%22name%22%3A%22github%22%2C%22gallery%22%3Atrue%2C%22url%22%3A%22https%3A%2F%2Fapi.githubcopilot.com%2Fmcp%2F%22%7D), but these aren't required to get started with AVM module development. You can find a list of MCP Servers that are curated by the Visual Studio Code team on the [MCP Servers for agent mode](https://code.visualstudio.com/mcp) page. + ### Adding Prompt Files ### Adding Modes From 0ad73d0abf801db8e6a9b0163b8c1e7bcd667009 Mon Sep 17 00:00:00 2001 From: Daniel Scott-Raynsford Date: Sat, 26 Jul 2025 17:11:33 +1200 Subject: [PATCH 5/9] CHANGE: format JSON and update GitHub Copilot docs - Reformatted JSON structure in mcp.json for consistency. - Updated GitHub Copilot usage documentation for clarity. --- .vscode/mcp.json | 20 +++++++++---------- .../usage/quickstart/github-copilot.md | 16 +++++++-------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/.vscode/mcp.json b/.vscode/mcp.json index 7cf1a2337..99932dcc3 100644 --- a/.vscode/mcp.json +++ b/.vscode/mcp.json @@ -1,13 +1,13 @@ { - "inputs": [], + "inputs": [], "servers": { - "microsoft.docs.mcp": { - "type": "http", - "url": "https://learn.microsoft.com/api/mcp" - }, - "github": { - "url": "https://api.githubcopilot.com/mcp/", - "type": "http" - } - } + "microsoft.docs.mcp": { + "type": "http", + "url": "https://learn.microsoft.com/api/mcp" + }, + "github": { + "url": "https://api.githubcopilot.com/mcp/", + "type": "http" + } + } } diff --git a/docs/content/usage/quickstart/github-copilot.md b/docs/content/usage/quickstart/github-copilot.md index b9fa691d6..79e7aacc4 100644 --- a/docs/content/usage/quickstart/github-copilot.md +++ b/docs/content/usage/quickstart/github-copilot.md @@ -37,17 +37,17 @@ To get started with using GitHub Copilot for AVM module development, you'll need 1. [Visual Studio Code](https://code.visualstudio.com/download) or [Visual Studio Code Insiders](https://code.visualstudio.com/insiders/) installed. -> [!NOTE] -> You can also use GitHub Codespaces to work on thees repos without needing to install anything locally. For example, open the [https://github.com/Azure/bicep-registry-modules](https://github.com/Azure/bicep-registry-modules) repository in GitHub Codespaces by clicking the button below: -> [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/Azure/bicep-registry-modules) + > [!NOTE] + > You can also use GitHub Codespaces to work on thees repos without needing to install anything locally. For example, open the [https://github.com/Azure/bicep-registry-modules](https://github.com/Azure/bicep-registry-modules) repository in GitHub Codespaces by clicking the button below: + > [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/Azure/bicep-registry-modules) 1. Install and configure the GitHub Copilot and GitHub Copilot Chat extensions, and optional, but recommended the GitHub Copilot for Azure extension. - | Extension | Install VS Code | Install VS Code Insiders | - |-----------|-----------------|--------------------------| - | GitHub Copilot | [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect?url=vscode%3Aextension%2FGitHub.copilot) | [![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect?url=vscode-insiders%3Aextension%2FGitHub.copilot) | - | GitHub Copilot Chat | [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect?url=vscode%3Aextension%2FGitHub.copilot-chat) | [![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect?url=vscode-insiders%3Aextension%2FGitHub.copilot-chat) | - | GitHub Copilot for Azure | [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect?url=vscode%3Aextension%2Fms-azuretools.vscode-azure-github-copilot) | [![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect?url=vscode-insiders%3Aextension%2Fms-azuretools.vscode-azure-github-copilot) | + | Extension | Install VS Code | Install VS Code Insiders | + |-----------|-----------------|--------------------------| + | GitHub Copilot | [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect?url=vscode%3Aextension%2FGitHub.copilot) | [![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect?url=vscode-insiders%3Aextension%2FGitHub.copilot) | + | GitHub Copilot Chat | [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect?url=vscode%3Aextension%2FGitHub.copilot-chat) | [![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect?url=vscode-insiders%3Aextension%2FGitHub.copilot-chat) | + | GitHub Copilot for Azure | [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect?url=vscode%3Aextension%2Fms-azuretools.vscode-azure-github-copilot) | [![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect?url=vscode-insiders%3Aextension%2Fms-azuretools.vscode-azure-github-copilot) | > [!NOTE] > If you are using GitHub Codespaces, these extensions are already installed and configured for you. From 8d03edc1da677b9caa0082e917c7cf1e6505a9d5 Mon Sep 17 00:00:00 2001 From: Daniel Scott-Raynsford Date: Sun, 27 Jul 2025 12:07:21 +1200 Subject: [PATCH 6/9] Add GitHub Copilot prompt file images for installation location and name - Added `github-copilot-prompt-file-install-location.png` to illustrate the installation location for GitHub Copilot prompts. - Added `github-copilot-prompt-file-install-name.png` to demonstrate the naming conventions for GitHub Copilot prompt files. --- .../usage/quickstart/github-copilot.md | 74 +++++++++++++++--- ...ub-copilot-prompt-file-install-confirm.png | Bin 0 -> 22892 bytes ...b-copilot-prompt-file-install-location.png | Bin 0 -> 4858 bytes ...ithub-copilot-prompt-file-install-name.png | Bin 0 -> 5045 bytes 4 files changed, 63 insertions(+), 11 deletions(-) create mode 100644 docs/static/images/usage/quickstart/github-copilot/github-copilot-prompt-file-install-confirm.png create mode 100644 docs/static/images/usage/quickstart/github-copilot/github-copilot-prompt-file-install-location.png create mode 100644 docs/static/images/usage/quickstart/github-copilot/github-copilot-prompt-file-install-name.png diff --git a/docs/content/usage/quickstart/github-copilot.md b/docs/content/usage/quickstart/github-copilot.md index 79e7aacc4..1385bb70f 100644 --- a/docs/content/usage/quickstart/github-copilot.md +++ b/docs/content/usage/quickstart/github-copilot.md @@ -28,8 +28,11 @@ Using GitHub Copilot in Visual Studio Code (VS Code) will have a significant ben This page will help you use GitHub Copilot in Visual Studio Code to get an AI accelerated benefit when building your scenarios. It will also cover common concepts, approaches and tips that will help you get the most out of GitHub Copilot when working with AVM modules for both Bicep and Terraform. -> [!NOTE] -> We recommend using Visual Studio Code. This guide focuses on GitHub Copilot & GitHub Copilot Chat in Visual Studio Code. Many of the concepts and approaches may be available in other IDEs that support GitHub Copilot, such as JetBrains IDEs and Visual Studio. But at the time of writing this Guide, Visual Studio Code provides the most complete feature set for GitHub Copilot users. +{{% notice style="Visual Studio Code Recommended" %}} + +We currently recommend using Visual Studio Code. This guide focuses on GitHub Copilot & GitHub Copilot Chat in Visual Studio Code. Many of the concepts and approaches may be available in other IDEs that support GitHub Copilot, such as JetBrains IDEs and Visual Studio. But at the time of writing this Guide, Visual Studio Code provides the most complete feature set for GitHub Copilot users. + +{{% /notice %}} ## Setting up your Environment @@ -37,9 +40,12 @@ To get started with using GitHub Copilot for AVM module development, you'll need 1. [Visual Studio Code](https://code.visualstudio.com/download) or [Visual Studio Code Insiders](https://code.visualstudio.com/insiders/) installed. - > [!NOTE] - > You can also use GitHub Codespaces to work on thees repos without needing to install anything locally. For example, open the [https://github.com/Azure/bicep-registry-modules](https://github.com/Azure/bicep-registry-modules) repository in GitHub Codespaces by clicking the button below: - > [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/Azure/bicep-registry-modules) + {{% notice style="note" title="GitHub Codespaces" %}} + + You can also use GitHub Codespaces to work on thees repos without needing to install anything locally. For example, open the [https://github.com/Azure/bicep-registry-modules](https://github.com/Azure/bicep-registry-modules) repository in GitHub Codespaces by clicking the button below: + [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/Azure/bicep-registry-modules) + + {{% /notice %}} 1. Install and configure the GitHub Copilot and GitHub Copilot Chat extensions, and optional, but recommended the GitHub Copilot for Azure extension. @@ -49,13 +55,19 @@ To get started with using GitHub Copilot for AVM module development, you'll need | GitHub Copilot Chat | [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect?url=vscode%3Aextension%2FGitHub.copilot-chat) | [![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect?url=vscode-insiders%3Aextension%2FGitHub.copilot-chat) | | GitHub Copilot for Azure | [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect?url=vscode%3Aextension%2Fms-azuretools.vscode-azure-github-copilot) | [![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect?url=vscode-insiders%3Aextension%2Fms-azuretools.vscode-azure-github-copilot) | -> [!NOTE] -> If you are using GitHub Codespaces, these extensions are already installed and configured for you. +{{% notice style="note" title="GitHub Codespaces" %}} + +If you are using GitHub Codespaces, these extensions are already installed and configured for you. + +{{% /notice %}} 1. Open Visual Studio Code or Visual Studio Code Insiders and sign in to GitHub Copilot using your GitHub account. See [Set up Copilot in VS Code](https://code.visualstudio.com/docs/copilot/setup) for more information. -> [!NOTE] -> Although a GitHub free account is sufficient to use GitHub Copilot to work with AVM, a GitHub Copilot Business or Pro subscription will provide acess to premium models, which enabled more reliably dealing with more complex AVM scenarios. +{{% notice style="note" title="GitHub Copilot Account" %}} + +Although a GitHub free account is sufficient to use GitHub Copilot to work with AVM, a GitHub Copilot Business or Pro subscription will provide acess to premium models, which enabled more reliably dealing with more complex AVM scenarios. + +{{% /notice %}} ### Configuring MCP Servers @@ -69,12 +81,52 @@ You should enable GitHub Copilot to access the following MCP Servers: There are many other MCP Servers that you can configure GitHub Copilot to use, such as [GitHub](vscode:mcp/install?%7B%22name%22%3A%22github%22%2C%22gallery%22%3Atrue%2C%22url%22%3A%22https%3A%2F%2Fapi.githubcopilot.com%2Fmcp%2F%22%7D), but these aren't required to get started with AVM module development. You can find a list of MCP Servers that are curated by the Visual Studio Code team on the [MCP Servers for agent mode](https://code.visualstudio.com/mcp) page. -### Adding Prompt Files +### Instruction Files + +TBC - currently no AVM specific instruction files are available (there are TF and Bicep ones though) + +### Custom Chat Modes + +TBC + +### Custom Prompt Files -### Adding Modes +Custom prompt files allow you to define reusable prompts that can be used with GitHub Copilot Chat to perform complex mulit-step tasks. These prompts can be used to help you with common tasks when working with AVM modules, such as updating your Bicep files to use the latest versions of Azure Verified Modules (AVM). + +It is recommended to install the following prompt files to help you perform common tasks when working with AVM modules: + +| IaC Type | Title | Description | Install | +| -------- | ----- | ----------- | ------- | +| Bicep | [Update Azure Verified Modules in Bicep Files](prompts/update-avm-modules-in-bicep.prompt.md) | Update all the Azure Verified Modules (AVM) in the selected Bicep files to the latest versions. | [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect?url=vscode%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fupdate-avm-modules-in-bicep.prompt.md) [![Install in VS Code](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect?url=vscode-insiders%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fupdate-avm-modules-in-bicep.prompt.md) | +| Terraform | Update Azure Verified Modules in Terraform Files | Not yet available | Coming soon | + +{{% notice style="note" title="Awesome-Copilot Repository on GitHub" %}} + +These prompt files are available in the [GitHub Awesome Copilot repository](https://github.com/github/awesome-copilot). + +{{% /notice %}} + +#### To install a prompt file + +1. Click the prompt file to install from the table. +1. Confirm that you want to install the prompt file: + + Confirm installation of Prompt File into VS Code + +1. Select whether to install the prompt file into this workspace (`.github/prompts/`) or into your global user account, making it available to every workspace you work on. + + Select scope of Prompt File + +1. You can choose a name for the prompt file, or leave it as the default name. + + Select scope of Prompt File + +Once the prompt file is installed, you can use it by typing `/` in the GitHub Copilot Agent input box and selecting the prompt file from the list of available prompts. ## Using GitHub Copilot with AVM IaC +GitHub Copilot can significantly enhance your productivity when working with Azure Verified Modules (AVM) for both Bicep and Terraform. It can assist you in various tasks, such as creating new AVM IaC from scratch, copying and adapting existing AVM code snippets, converting non-AVM IaC to use AVM, refactoring existing AVM IaC to use different technologies or architectures, updating existing AVM modules to use the latest version, and creating documentation for your AVM IaC. + ### Creating AVM IaC from Scratch When starting a new AVM module, you can use GitHub Copilot to help generate the initial structure and boilerplate code. For example, you can start typing a comment or a function name, and GitHub Copilot will suggest completions based on the context of your code. diff --git a/docs/static/images/usage/quickstart/github-copilot/github-copilot-prompt-file-install-confirm.png b/docs/static/images/usage/quickstart/github-copilot/github-copilot-prompt-file-install-confirm.png new file mode 100644 index 0000000000000000000000000000000000000000..36493b62f236306a25c6a1cfe794c75843562f5a GIT binary patch literal 22892 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 OgQz34;Wf%u&;A8ceXb+` literal 0 HcmV?d00001 From c6fe08fa664d306e5185279bc50d608add2699d6 Mon Sep 17 00:00:00 2001 From: Daniel Scott-Raynsford Date: Sun, 27 Jul 2025 12:33:29 +1200 Subject: [PATCH 7/9] CHANGE: update MCP server configuration instructions - Renamed section from "Configuring MCP Servers" to "Adding MCP Servers" - Added details on configuring MCP servers in Visual Studio Code - Included links to relevant Visual Studio Code documentation - Added a new section for "Instruction Files" with a note on availability --- .../content/usage/quickstart/github-copilot.md | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/docs/content/usage/quickstart/github-copilot.md b/docs/content/usage/quickstart/github-copilot.md index 1385bb70f..bea8d7831 100644 --- a/docs/content/usage/quickstart/github-copilot.md +++ b/docs/content/usage/quickstart/github-copilot.md @@ -69,7 +69,7 @@ Although a GitHub free account is sufficient to use GitHub Copilot to work with {{% /notice %}} -### Configuring MCP Servers +### Adding MCP Servers Now that you've enabled GitHub Copilot, you can give it access to **tools**, such as searching _Microsoft Learn_ or getting _Azure Bicep Best practices_. Some VS Code extentions automatically provide you access to tools when you install them (for example, the [Github Copilot for Azure](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azure-github-copilot) extension. But other tools may be provided by [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) servers. @@ -81,13 +81,15 @@ You should enable GitHub Copilot to access the following MCP Servers: There are many other MCP Servers that you can configure GitHub Copilot to use, such as [GitHub](vscode:mcp/install?%7B%22name%22%3A%22github%22%2C%22gallery%22%3Atrue%2C%22url%22%3A%22https%3A%2F%2Fapi.githubcopilot.com%2Fmcp%2F%22%7D), but these aren't required to get started with AVM module development. You can find a list of MCP Servers that are curated by the Visual Studio Code team on the [MCP Servers for agent mode](https://code.visualstudio.com/mcp) page. -### Instruction Files - -TBC - currently no AVM specific instruction files are available (there are TF and Bicep ones though) +For more information on configuring MCP Servers in Visual Studio Code, see the [Model Context Protocol](https://code.visualstudio.com/docs/copilot/chat/mcp-servers) page in the Visual Studio Code documentation. ### Custom Chat Modes -TBC +Chat modes in Visual Studio Code let you customize how GitHub Copilot Chat responds for different tasks—like answering questions, editing code, or running automated workflows. You can easily switch between modes in the Chat view to match what you need to do. The default Agent chat mode is great for general tasks, but often makes mistakes or assumptions when it comes to building IaC using AVM modules. For example, it is extremely common for GitHub Copilot to use older or even hallucinated AVM modules. + +To prevent these issues we can set up custom chat modes that give GitHub Copilot clear guidance and context for AVM scenarios. This includes providing clear instructions on how GitHub Copilot should retrieve AVM best practices, module documentation and the current versions of each module. + +For more information on creating custom chat modes in Visual Studio Code, see [Custom chat modes](https://code.visualstudio.com/docs/copilot/chat/chat-modes#_custom-chat-modes) page in the Visual Studio Code documentation. ### Custom Prompt Files @@ -123,7 +125,11 @@ These prompt files are available in the [GitHub Awesome Copilot repository](http Once the prompt file is installed, you can use it by typing `/` in the GitHub Copilot Agent input box and selecting the prompt file from the list of available prompts. -## Using GitHub Copilot with AVM IaC +### Instruction Files + +TBC - currently no AVM specific instruction files are available (there are TF and Bicep ones though) + +## How to use GitHub Copilot with AVM GitHub Copilot can significantly enhance your productivity when working with Azure Verified Modules (AVM) for both Bicep and Terraform. It can assist you in various tasks, such as creating new AVM IaC from scratch, copying and adapting existing AVM code snippets, converting non-AVM IaC to use AVM, refactoring existing AVM IaC to use different technologies or architectures, updating existing AVM modules to use the latest version, and creating documentation for your AVM IaC. From 66fd612b0ce9f4346f96c9c254cbc3a7be0ced3a Mon Sep 17 00:00:00 2001 From: Daniel Scott-Raynsford Date: Sun, 27 Jul 2025 12:38:39 +1200 Subject: [PATCH 8/9] CHANGE: add custom chat modes for GitHub Copilot - Introduced custom chat modes for Bicep and Terraform in GitHub Copilot. - Added installation instructions and links to the Awesome-Copilot repository. - Enhanced documentation for using custom chat modes in Visual Studio Code. --- .../usage/quickstart/github-copilot.md | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/docs/content/usage/quickstart/github-copilot.md b/docs/content/usage/quickstart/github-copilot.md index bea8d7831..5836ca8d2 100644 --- a/docs/content/usage/quickstart/github-copilot.md +++ b/docs/content/usage/quickstart/github-copilot.md @@ -89,8 +89,36 @@ Chat modes in Visual Studio Code let you customize how GitHub Copilot Chat respo To prevent these issues we can set up custom chat modes that give GitHub Copilot clear guidance and context for AVM scenarios. This includes providing clear instructions on how GitHub Copilot should retrieve AVM best practices, module documentation and the current versions of each module. +| IaC Type | Title | Description | Install | +| -------- | ----- | ----------- | ------- | +| Bicep | [Azure AVM Bicep mode](chatmodes/azure-verified-modules-bicep.chatmode.md) | Create, update, or review Azure IaC in Bicep using Azure Verified Modules (AVM). | [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect?url=vscode%3Achat-chatmode%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fchatmodes%2Fazure-verified-modules-bicep.chatmode.md) [![Install in VS Code](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect?url=vscode-insiders%3Achat-chatmode%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fchatmodes%2Fazure-verified-modules-bicep.chatmode.md) | +| Terraform | [Azure AVM Terraform mode](chatmodes/azure-verified-modules-terraform.chatmode.md) | Create, update, or review Azure IaC in Terraform using Azure Verified Modules (AVM). | [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect?url=vscode%3Achat-chatmode%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fchatmodes%2Fazure-verified-modules-terraform.chatmode.md) [![Install in VS Code](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect?url=vscode-insiders%3Achat-chatmode%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fchatmodes%2Fazure-verified-modules-terraform.chatmode.md) | + +{{% notice style="note" title="Awesome-Copilot Repository on GitHub" %}} + +These custom chat modes are available in the [GitHub Awesome Copilot repository](https://github.com/github/awesome-copilot). + +{{% /notice %}} + For more information on creating custom chat modes in Visual Studio Code, see [Custom chat modes](https://code.visualstudio.com/docs/copilot/chat/chat-modes#_custom-chat-modes) page in the Visual Studio Code documentation. +#### To install a custom chat mode + +1. Click the custom chat mode to install from the table above. +1. Confirm that you want to install the custom chat mode: + + Confirm installation of Prompt File into VS Code + +1. Select whether to install the custom chat mode into this workspace (`.github/chatmode/`) or into your global user account, making it available to every workspace you work on. + + Select scope of Prompt File + +1. You can choose a name for the custom chat mode, or leave it as the default name. + + Select scope of Prompt File + +Once the custom chat mode is installed, you can switch to it in the GitHub Copilot chat box by clicking the `Agent` dropdown and selecting the custom chat mode from the list of available chat modes. + ### Custom Prompt Files Custom prompt files allow you to define reusable prompts that can be used with GitHub Copilot Chat to perform complex mulit-step tasks. These prompts can be used to help you with common tasks when working with AVM modules, such as updating your Bicep files to use the latest versions of Azure Verified Modules (AVM). From 8a2161d6a49ded2859acdd5751ec76d4ffe5083f Mon Sep 17 00:00:00 2001 From: Jack Tracey <41163455+jtracey93@users.noreply.github.com> Date: Fri, 1 Aug 2025 16:39:46 +0100 Subject: [PATCH 9/9] menu navigation and site nav config --- docs/content/usage/_index.md | 2 + docs/content/usage/gh-copilot/_index.md | 14 +++ .../using-avm-with-gh-copilot.md} | 8 +- docs/hugo.toml | 106 ++++++++++-------- ...ub-copilot-prompt-file-install-confirm.png | Bin ...b-copilot-prompt-file-install-location.png | Bin ...ithub-copilot-prompt-file-install-name.png | Bin 7 files changed, 81 insertions(+), 49 deletions(-) create mode 100644 docs/content/usage/gh-copilot/_index.md rename docs/content/usage/{quickstart/github-copilot.md => gh-copilot/using-avm-with-gh-copilot.md} (98%) rename docs/static/images/usage/{quickstart/github-copilot => gh-copilot}/github-copilot-prompt-file-install-confirm.png (100%) rename docs/static/images/usage/{quickstart/github-copilot => gh-copilot}/github-copilot-prompt-file-install-location.png (100%) rename docs/static/images/usage/{quickstart/github-copilot => gh-copilot}/github-copilot-prompt-file-install-name.png (100%) diff --git a/docs/content/usage/_index.md b/docs/content/usage/_index.md index 0be401421..589b21383 100644 --- a/docs/content/usage/_index.md +++ b/docs/content/usage/_index.md @@ -16,3 +16,5 @@ This section describes usage guidance. - [Solution Development]({{% siteparam base %}}/usage/solution-development/) - [Bicep]({{% siteparam base %}}/usage/solution-development/bicep/) - [Terraform]({{% siteparam base %}}/usage/solution-development/terraform/) +- [GitHub Copilot + AVM]({{% siteparam base %}}/usage/gh-copilot/) + - [Using AVM with GitHub Copilot]({{% siteparam base %}}/usage/gh-copilot/using-avm-with-gh-copilot/) diff --git a/docs/content/usage/gh-copilot/_index.md b/docs/content/usage/gh-copilot/_index.md new file mode 100644 index 000000000..99e31ce27 --- /dev/null +++ b/docs/content/usage/gh-copilot/_index.md @@ -0,0 +1,14 @@ +--- +draft: false +title: GitHub Copilot + AVM +linktitle: GitHub Copilot + AVM +description: Guidance on using GitHub Copilot with Azure Verified Modules (AVM) to enhance your development workflow and AVM consumption. +--- + +This section provides guidance on using GitHub Copilot with Azure Verified Modules (AVM) to enhance your development workflow and AVM consumption. + +Whether you are new to AVM or an experienced user, GitHub Copilot can help you write code faster and more efficiently by providing AI-powered code suggestions and completions. It can help both module developers in creating and maintaining AVM modules, as well as solution developers in consuming AVM modules to build solutions. + +Review the following sections to learn how to effectively use GitHub Copilot with AVM: + +- [Using AVM with GitHub Copilot](using-avm-with-gh-copilot.md): Learn how to set up and configure GitHub Copilot for your development environment. diff --git a/docs/content/usage/quickstart/github-copilot.md b/docs/content/usage/gh-copilot/using-avm-with-gh-copilot.md similarity index 98% rename from docs/content/usage/quickstart/github-copilot.md rename to docs/content/usage/gh-copilot/using-avm-with-gh-copilot.md index 5836ca8d2..08b6b11ef 100644 --- a/docs/content/usage/quickstart/github-copilot.md +++ b/docs/content/usage/gh-copilot/using-avm-with-gh-copilot.md @@ -1,10 +1,10 @@ --- -draft: true +draft: false title: Using AVM with GitHub Copilot linktitle: Using AVM with GitHub Copilot type: default -weight: 3 -description: How to use GitHub Copilot to accelerate creation and maintainance of Azure Verified Modules (AVM) for both Bicep and Terraform. +weight: 1 +description: How to use GitHub Copilot to accelerate creation and maintenance of Azure Verified Modules (AVM) for both Bicep and Terraform. --- {{% notice style="note" %}} @@ -107,7 +107,7 @@ For more information on creating custom chat modes in Visual Studio Code, see [C 1. Click the custom chat mode to install from the table above. 1. Confirm that you want to install the custom chat mode: - Confirm installation of Prompt File into VS Code + Confirm installation of Prompt File into VS Code 1. Select whether to install the custom chat mode into this workspace (`.github/chatmode/`) or into your global user account, making it available to every workspace you work on. diff --git a/docs/hugo.toml b/docs/hugo.toml index 066d4c80d..8ac57166d 100644 --- a/docs/hugo.toml +++ b/docs/hugo.toml @@ -108,30 +108,6 @@ pageRef = '/indexes' weight = 2 params = { alwaysopen = true, collapsibleMenu = true } - [[menu.defined]] - identifier = 'solution-development' - parent = 'usage' - name = 'Solution Development' - pageRef = '/usage/solution-development' - weight = 2 - params = { alwaysopen = false, collapsibleMenu = true } - - [[menu.defined]] - identifier = 'bicep-solution-development' - parent = 'solution-development' - name = 'Bicep' - pageRef = '/usage/solution-development/bicep' - weight = 1 - params = { alwaysopen = false, collapsibleMenu = true } - - [[menu.defined]] - identifier = 'terraform-solution-development' - parent = 'solution-development' - name = 'Terraform' - pageRef = '/usage/solution-development/terraform' - weight = 2 - params = { alwaysopen = false, collapsibleMenu = true } - # [[menu.defined]] # identifier = 'concepts' # parent = 'usage' @@ -212,29 +188,69 @@ pageRef = '/usage' weight = 3 params = { alwaysopen = true, collapsibleMenu = true } -[[menu.defined]] -identifier = 'quickstart' -parent = 'usage' -name = 'Quickstart' -pageRef = '/usage/quickstart' -weight = 1 -params = { alwaysopen = false, collapsibleMenu = true } + [[menu.defined]] + identifier = 'quickstart' + parent = 'usage' + name = 'Quickstart' + pageRef = '/usage/quickstart' + weight = 1 + params = { alwaysopen = false, collapsibleMenu = true } -[[menu.defined]] -identifier = 'bicep-quickstart' -parent = 'quickstart' -name = 'Bicep' -pageRef = '/usage/quickstart/bicep' -weight = 1 -params = { alwaysopen = false, collapsibleMenu = true } + [[menu.defined]] + identifier = 'bicep-quickstart' + parent = 'quickstart' + name = 'Bicep' + pageRef = '/usage/quickstart/bicep' + weight = 1 + params = { alwaysopen = false, collapsibleMenu = true } -[[menu.defined]] -identifier = 'terraform-quickstart' -parent = 'quickstart' -name = 'Terraform' -pageRef = '/usage/quickstart/terraform' -weight = 2 -params = { alwaysopen = false, collapsibleMenu = true } + [[menu.defined]] + identifier = 'terraform-quickstart' + parent = 'quickstart' + name = 'Terraform' + pageRef = '/usage/quickstart/terraform' + weight = 2 + params = { alwaysopen = false, collapsibleMenu = true } + + [[menu.defined]] + identifier = 'solution-development' + parent = 'usage' + name = 'Solution Development' + pageRef = '/usage/solution-development' + weight = 2 + params = { alwaysopen = false, collapsibleMenu = true } + + [[menu.defined]] + identifier = 'bicep-solution-development' + parent = 'solution-development' + name = 'Bicep' + pageRef = '/usage/solution-development/bicep' + weight = 1 + params = { alwaysopen = false, collapsibleMenu = true } + + [[menu.defined]] + identifier = 'terraform-solution-development' + parent = 'solution-development' + name = 'Terraform' + pageRef = '/usage/solution-development/terraform' + weight = 2 + params = { alwaysopen = false, collapsibleMenu = true } + + [[menu.defined]] + identifier = 'github-copilot' + parent = 'usage' + name = 'GitHub Copilot + AVM' + pageRef = '/usage/gh-copilot' + weight = 3 + params = { alwaysopen = false, collapsibleMenu = true } + + [[menu.defined]] + identifier = 'github-copilot-using-with-avm' + parent = 'github-copilot' + name = 'Using AVM with GitHub Copilot' + pageRef = '/usage/gh-copilot/using-avm-with-gh-copilot' + weight = 1 + params = { alwaysopen = false, collapsibleMenu = true } [[menu.defined]] identifier = 'specs-defs' diff --git a/docs/static/images/usage/quickstart/github-copilot/github-copilot-prompt-file-install-confirm.png b/docs/static/images/usage/gh-copilot/github-copilot-prompt-file-install-confirm.png similarity index 100% rename from docs/static/images/usage/quickstart/github-copilot/github-copilot-prompt-file-install-confirm.png rename to docs/static/images/usage/gh-copilot/github-copilot-prompt-file-install-confirm.png diff --git a/docs/static/images/usage/quickstart/github-copilot/github-copilot-prompt-file-install-location.png b/docs/static/images/usage/gh-copilot/github-copilot-prompt-file-install-location.png similarity index 100% rename from docs/static/images/usage/quickstart/github-copilot/github-copilot-prompt-file-install-location.png rename to docs/static/images/usage/gh-copilot/github-copilot-prompt-file-install-location.png diff --git a/docs/static/images/usage/quickstart/github-copilot/github-copilot-prompt-file-install-name.png b/docs/static/images/usage/gh-copilot/github-copilot-prompt-file-install-name.png similarity index 100% rename from docs/static/images/usage/quickstart/github-copilot/github-copilot-prompt-file-install-name.png rename to docs/static/images/usage/gh-copilot/github-copilot-prompt-file-install-name.png