xiaohongshu
xiaohongshu
bicep
Expert assistance for Azure Bicep infrastructure-as-code. Provides best practices for authoring Bicep templates, Azure resource type discovery with API versions, resource schema retrieval, and Azure Verified Modules (AVM) guidance. Use when writing Bicep files, deploying Azure resources, looking ...
Full skill instructions
Expert guidance for Azure Bicep infrastructure-as-code development, including best practices, resource type discovery, schema retrieval, and Azure Verified Modules.
This skill provides four main functions equivalent to the Bicep MCP Server:
Provide guidance from the comprehensive best practices below. Focus on the specific area they're asking about (parameters, variables, resources, modules, naming, security, etc.).
Run the helper script to list resource types:
# PowerShell
./scripts/get-resource-types.ps1 -Provider "Microsoft.Storage"
# Bash
./scripts/get-resource-types.sh "Microsoft.Storage"
Or use Azure CLI directly:
az provider show --namespace Microsoft.Storage --query "resourceTypes[].{Type:resourceType,ApiVersions:apiVersions[0]}" -o table
Use Bicep CLI to get the schema:
bicep build-params --stdout <<< "param resourceType string = 'Microsoft.Storage/storageAccounts@2023-05-01'"
Or reference the helper script in scripts/get-resource-schema.ps1
Provide AVM guidance and help them find appropriate modules from the Bicep Public Registry.
Use descriptive names: Parameters should have clear, meaningful names that indicate their purpose
// Good
param storageAccountName string
param enableHttpsTrafficOnly bool = true
// Avoid
param san string
param flag bool
Provide descriptions: Always add @description() decorator
@description('The name of the storage account. Must be globally unique.')
param storageAccountName string
Set safe defaults: Default values should be secure and cost-effective
@description('The SKU for the storage account')
@allowed(['Standard_LRS', 'Standard_GRS', 'Standard_ZRS', 'Premium_LRS'])
param storageAccountSku string = 'Standard_LRS'
Use constraints wisely: Apply @minLength(), @maxLength(), @minValue(), @maxValue()
@minLength(3)
@maxLength(24)
param storageAccountName string
Use @allowed sparingly: Overly restrictive lists block valid deployments as Azure adds new SKUs
Secure sensitive parameters: Use @secure() for secrets
@secure()
param adminPassword string
Use for computed values: Variables simplify complex expressions
var storageAccountName = '${prefix}${uniqueString(resourceGroup().id)}'
Use for repeated values: Define once, use multiple times
var commonTags = {
environment: environment
project: projectName
deployedBy: 'Bicep'
}
Typed variables (Bicep 0.26+): Add types for clarity
var instanceCount int = environment == 'prod' ? 5 : 2
Use symbolic names without 'name' suffix:
// Good
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = {
// Avoid
resource storageAccountName 'Microsoft.Storage/storageAccounts@2023-05-01' = {
Use latest stable API versions: Check for the most recent stable API version
Leverage implicit dependencies: Bicep automatically handles dependencies when you reference resources
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = {
name: storageAccountName
// ...
}
resource blobService 'Microsoft.Storage/storageAccounts/blobServices@2023-05-01' = {
parent: storageAccount // Implicit dependency
name: 'default'
}
Use existing keyword for references:
resource existingVnet 'Microsoft.Network/virtualNetworks@2023-09-01' existing = {
name: vnetName
}
Use nested declaration (preferred):
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = {
name: storageAccountName
// ...
resource blobService 'blobServices' = {
name: 'default'
}
}
Or use parent property:
resource blobService 'Microsoft.Storage/storageAccounts/blobServices@2023-05-01' = {
parent: storageAccount
name: 'default'
}
Use modules for reusability: Break large templates into focused modules
module storageModule 'modules/storage.bicep' = {
name: 'storageDeployment'
params: {
storageAccountName: storageAccountName
location: location
}
}
Use Azure Verified Modules: Leverage pre-built, tested modules from the Bicep Registry
module storage 'br/public:avm/res/storage/storage-account:0.9.0' = {
name: 'storageDeployment'
params: {
name: storageAccountName
location: location
}
}
Version your modules: Always pin to specific versions
uniqueString() for unique names:
var storageAccountName = 'st${uniqueString(resourceGroup().id)}'
Expose essential values: Output what consumers need
output storageAccountId string = storageAccount.id
output primaryEndpoints object = storageAccount.properties.primaryEndpoints
Never output secrets: Use Key Vault references instead
// WRONG - Never do this
output connectionString string = storageAccount.listKeys().keys[0].value
File structure:
project/
├── main.bicep # Entry point
├── main.bicepparam # Parameters file
├── modules/
│ ├── networking.bicep
│ ├── storage.bicep
│ └── compute.bicep
└── tests/
└── main.tests.bicep
Order of elements in files:
Comments: Use // for single-line, /* */ for multi-line
Azure Verified Modules are pre-built, tested Bicep modules maintained by Microsoft that follow best practices and the Well-Architected Framework.
// Reference from Bicep Public Registry
module storage 'br/public:avm/res/storage/storage-account:0.9.0' = {
name: 'storageDeployment'
params: {
name: 'mystorageaccount'
location: location
}
}
mcr.microsoft.com for container imagesavm/res/): Single Azure resource with all configurationsavm/ptn/): Multi-resource patterns for common scenariosavm/utl/): Helper types and functionsresource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = {
name: storageAccountName
location: location
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
properties: {
accessTier: 'Hot'
supportsHttpsTrafficOnly: true
minimumTls }
}
resource vnet 'Microsoft.Network/virtualNetworks@2023-09-01' = {
name: vnetName
location: location
properties: {
addressSpace: {
addressPrefixes: ['10.0.0.0/16']
}
subnets: [
{
name: 'default'
properties: {
addressPrefix: '10.0.1.0/24'
}
}
]
}
}
resource keyVault 'Microsoft.KeyVault/vaults@2023-07-01' = {
name: keyVaultName
location: location
properties: {
tenantId: subscription().tenantId
sku: {
family: 'A'
name: 'standard'
}
enableRbacAuthorization: true
enableSoftDelete: true
softDeleteRetentionInDays: 90
}
}
bicep, azure, arm, infrastructure as code, iac, resource manager, deployment, template, module, avm, azure verified modules, resource type, schema, api version, storage account, virtual network, key vault, best practices
xiaohongshu
technical spec
product ux expert
database patterns
Conduct multi-agent task orchestration and workflow coordination.
Initialize project with Conductor artifacts (product definition,
Expert in web animations, transitions, and motion design using Framer Motion and CSS
Creates Mermaid and ASCII diagrams for flowcharts, architecture, ERDs, state machines, mindmaps, and more. Use when user mentions diagram, flowchart, mermaid, ASCII diagram, text diagram, terminal diagram, visualize, C4, mindmap, architecture diagram, sequence diagram, ERD, or needs visual docume...
PostgreSQL bindings for H3 hexagonal grid system. Use when working with H3 cells in Postgres, including spatial indexing, geometry/geography integration, and raster analysis.
Context-Driven Development skill for projects using Conductor. Use this skill when you detect a `conductor/` directory in the project, when working on tasks defined in a `plan.md` file, or when the user asks about tracks, specs, or plans. Automatically applies TDD workflow, tracks task completion...
Display project status, active tracks, and next actions
Official Stakpak application containerization standard operating procedure, a step-by-step guidline to properly dockerize applications. This is a rule book curated by the Stakpak Team.
Generate, edit, and beat-sync AI video with leading models in one workspace.
The world's fastest calendar for remote work
Transform Your Design with AI Designer by ImgCreator.ai
Revolutionizing Video Production with AI-Powered Creativity
Extend an image past the frame and let AI fill the new aspect ratio.
Discover your celebrity doppelgänger with StarByFace!
ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.
Opus.ai: Revolutionize Your Web Experience