-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Add Azure Verified Modules with Bicep language specific copilot instructions #481
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
- Introduced comprehensive documentation for Azure Verified Modules (AVM) and Bicep. - Included guidelines for module discovery, usage, naming conventions, and best practices. - Added validation requirements and troubleshooting tips for Bicep files.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This pull request introduces a comprehensive instruction file for Azure Verified Modules (AVM) with Bicep language-specific guidance. The PR adds language-specific conventions and best practices to help developers use AVM modules effectively when working with Bicep Infrastructure as Code.
Key Changes:
- Added detailed Azure Verified Modules instruction file with module discovery, usage patterns, naming conventions, and validation requirements
- Updated the README to include the new instruction file in the alphabetically-sorted instruction list
- Provided comprehensive guidance on Bicep best practices specific to AVM module usage
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 5 comments.
| File | Description |
|---|---|
instructions/azure-verified-modules-bicep.instructions.md |
New instruction file providing comprehensive guidance for using Azure Verified Modules with Bicep, including module discovery, naming conventions, version management, best practices, validation requirements, and troubleshooting |
docs/README.instructions.md |
Added entry for the new Azure Verified Modules Bicep instruction file with installation badges, properly positioned alphabetically between Azure Terraform and Azure Verified Modules Terraform entries |
Review Summary:
The PR is well-structured and provides valuable guidance for Bicep developers working with Azure Verified Modules. The instruction file follows the repository's conventions for front matter format, file naming, and content structure.
I've identified a few moderate documentation issues related to decorator naming that should be addressed:
- The file uses
@sys.description()in multiple places, but Bicep's standard decorator is@description()without thesysprefix - Some minor clarity improvements could be made to naming convention examples
The README update is correctly formatted and properly positioned alphabetically with other Azure-related instructions.
| ### Documentation | ||
|
|
||
| - ✅ **Include** helpful `//` comments for complex logic | ||
| - ✅ **Use** `@sys.description()` on all parameters with clear explanations |
Copilot
AI
Dec 10, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Inconsistent decorator naming: This line uses @sys.description(), but in Bicep, the standard decorator is @description() without the sys prefix. The @sys. namespace is for system functions, not for the built-in description decorator. Update to use @description() for accuracy.
| - [ ] Module versions are pinned | ||
| - [ ] Code builds successfully (`az bicep build`) | ||
| - [ ] Accompanying `.bicepparam` files updated | ||
| - [ ] `@sys.description()` on all parameters |
Copilot
AI
Dec 10, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Inconsistent decorator naming: This line also uses @sys.description(). Apply the same correction as above - use @description() instead of @sys.description().
| - [ ] `@sys.description()` on all parameters | |
| - [ ] `@description()` on all parameters |
| ### Symbolic Names | ||
|
|
||
| - Use lowerCamelCase for all names (variables, parameters, resources, modules) | ||
| - Use resource type descriptive names (e.g., `storageAccount` not `storageAccountName`) |
Copilot
AI
Dec 10, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Inconsistent terminology: The comment mentions "resource type descriptive names" but the example shows storageAccount which is a generic resource name, not the actual resource type. Consider clarifying this to say "Use resource type-based descriptive names" or provide an example that better illustrates the point (e.g., comparing sa vs storageAccount).
| - Use resource type descriptive names (e.g., `storageAccount` not `storageAccountName`) | |
| - Use resource type-based descriptive names (e.g., `storageAccount` not `sa`) |
| - Use resource type descriptive names (e.g., `storageAccount` not `storageAccountName`) | ||
| - Avoid 'name' suffix in symbolic names as they represent the resource, not the resource's name |
Copilot
AI
Dec 10, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The parenthetical example could be clearer. The phrase "not storageAccountName" suggests that the symbolic name should not include "name" as a suffix, but the comparison is between storageAccount and storageAccountName. Consider revising to explicitly state the guideline, such as: "Use resource type descriptive names (e.g., storageAccount or virtualNetwork, not storageAccountName or vnetName)" to make the anti-pattern more obvious.
| - Use resource type descriptive names (e.g., `storageAccount` not `storageAccountName`) | |
| - Avoid 'name' suffix in symbolic names as they represent the resource, not the resource's name | |
| - Use resource type descriptive names (e.g., `storageAccount` or `virtualNetwork`, not `storageAccountName` or `vnetName`) | |
| - Avoid using the 'name' suffix in symbolic names, as symbolic names represent the resource itself, not the resource's name property |
|
|
||
| ### Code Structure | ||
|
|
||
| - ✅ **Declare** parameters at top of file with `@sys.description()` decorators |
Copilot
AI
Dec 10, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Inconsistent decorator naming: Line 94 uses @sys.description() but line 135 uses the same decorator. In Bicep, the standard decorator is @description(), not @sys.description(). The @sys. namespace is used for system functions, but description is a built-in decorator that doesn't require the sys prefix. Consider updating all references to use @description() for accuracy.
| - ✅ **Declare** parameters at top of file with `@sys.description()` decorators | |
| - ✅ **Declare** parameters at top of file with `@description()` decorators |
Pull Request Checklist
npm startand verified thatREADME.mdis up to date.Description
Type of Contribution
Additional Notes
By submitting this pull request, I confirm that my contribution abides by the Code of Conduct and will be licensed under the MIT License.