SKILL.md
Skill Instructions
Goal
Generate a new, human-maintainable set of .bicep files plus a .bicepparam file that deploys Azure infrastructure based on user requirements.
Guiding Principles
- Optimize for maintainability and clarity: split into sensible modules, use descriptive names, and factor repeated patterns.
- Prefer templates that look like they were written by a human, not auto-generated code.
- Always start with example infrastructure and planning before generating resource configurations.
Required Tools / Commands
Strongly prefer the following tools/commands as part of the workflow, instead of finding other tools or CLI commands to call:
generateinfrastructureplanMCP tool: gather comprehensive requirements and generate a detailed architecture design.generateresourcebodyMCP tool: get properly configured resource definitions with security best practices applied.getbicepbest_practicesMCP tool: learn current best practices before generating templates.getbicepfile_diagnosticsMCP tool: compile/validate Bicep and address errors/warnings after generating files.whatifdeploymentMCP tool: run a live diff against Azure using a.bicepparamfile.
Workflow
1) Plan the Architecture
- Gather comprehensive requirements using the
generateinfrastructureplanMCP tool. - This returns:
- Overview of the infrastructure design - Complete list of required resources with types and API versions - Resource relationships and dependencies - Security and configuration requirements
- Explain the proposed architecture to the user before proceeding.
2) Generate Resource Configurations
- For each resource in the plan, use the
generateresourcebodyMCP tool to get properly configured resource definitions. - This returns complete resource body JSON with security best practices applied.
- Ensure all resources from the plan are accounted for.
3) Create the Bicep Files
- Generate complete
.bicepand.bicepparamfiles including:
- Parameters with @description annotations for configurable values - Variables for computed values - Resources converted from JSON to Bicep syntax - Proper resource dependencies using Bicep references - Outputs for important resource properties (IDs, endpoints, URLs) - Comments documenting configuration decisions
- Use a main entrypoint (for example
main.bicep) and split resources into modules by domain if the infrastructure is complex. - Declare parameter values in the
.bicepparamfile, rather than using default values in the.bicepfile parameter declarations.
4) Offline validation
- After generating files, run
getbicepfile_diagnosticson the.bicepfiles. - Fix compilation errors immediately.
- Review warnings and fix anything that could affect correctness, deployment behavior, or maintainability.
5) Live validation
- Run
whatifdeploymenton the.bicepparamfile. - Make sure you know which subscriptionId and resourceGroup to use before calling this tool - ask the user for input if you don't have this context.
- Verify the output matches your expectations.
Acceptance Criteria
- A coherent set of
.bicepfiles + a.bicepparamfile exists for the requested infrastructure. - The Bicep compiles cleanly (diagnostics show no errors; warnings are understood/acceptable).
- All resources from the infrastructure plan are included.
- Security best practices from the generated resource bodies are applied.