Skip to content

Contributing to Agentic InfraOps

Thank you for your interest in contributing! Agentic InfraOps revolutionizes how IT Pros build Azure environments through coordinated AI agents.

This file is the quick contributor entrypoint. The canonical, detailed contributor workflow (branch protection, PR flow, automation, versioning) is:

  1. Agent Improvements

    • Enhancements to existing agents (.github/agents/*.agent.md)
    • Better prompts and handoff patterns
    • Additional validation checks
  2. Documentation

    • Workflow improvements (docs/workflow.md)
    • Better examples and use cases
    • Troubleshooting guides
  3. Best Practices

    • Bicep and Terraform patterns and templates
    • Azure Verified Module usage examples (Bicep and AVM-TF)
    • Security and compliance guidance
    ⬆️ Back to Top## 📋 Contribution Guidelines
  1. Check existing issues - Someone might already be working on it
  2. Open an issue - Discuss your idea before investing time

This repo uses a protected main branch. Contributions land via pull requests with required checks and review.

All branches must use an approved prefix that indicates the change domain. This is enforced by lefthook pre-push hooks and GitHub Actions CI.

PrefixScopeExample
docs/Documentation (docs/, mkdocs.yml, README.md)docs/update-workflow-guide
agents/Agent definitions (.github/agents/, agent-registry.json)agents/improve-conductor
skills/Skill files (.github/skills/, skill-affinity.json)skills/add-tf-patterns
infra/Infrastructure code (infra/bicep/, infra/terraform/)infra/add-private-endpoints
scripts/Validation scripts (scripts/, package.json)scripts/fix-h2-sync
instructions/Instruction files (.github/instructions/)instructions/update-bicep
fix/Bug fixes (cross-cutting, any files)fix/session-state-schema
feat/New features (cross-cutting, any files)feat/azure-skills-integration
chore/Maintenance, deps, tooling (cross-cutting)chore/update-lefthook
ci/CI/CD workflows (cross-cutting)ci/add-branch-enforcement
refactor/Code refactoring (cross-cutting)refactor/simplify-handoffs
perf/Performance improvements (cross-cutting)perf/faster-validation
test/Test additions/updates (cross-cutting)test/add-e2e-terraform
build/Build system changes (cross-cutting)build/update-node-deps
revert/Reverting previous changes (cross-cutting)revert/broken-lint-rule

Domain-scoped branches (docs/, agents/, skills/, infra/, scripts/, instructions/) are restricted to modifying files within their domain. This prevents accidental cross-cutting changes in narrow-scope branches.

Cross-cutting branches (feat/, fix/, chore/, ci/, refactor/, perf/, test/, build/, revert/) may modify any files.

Domain PrefixAllowed File Paths
docs/docs/, mkdocs.yml, README.md, CONTRIBUTING.md, CHANGELOG.md
agents/.github/agents/, .github/agent-registry.json
skills/.github/skills/, .github/skill-affinity.json
infra/infra/
scripts/scripts/, package.json
instructions/.github/instructions/

Branch naming and scope are enforced at three levels:

  1. Local (lefthook pre-push) — instant feedback before push via scripts/validate-branch-naming.sh and scripts/validate-branch-scope.sh
  2. CI (GitHub Actions) — the branch-enforcement.yml workflow validates naming and scope on every PR to main
  3. GitHub Rulesets — optional server-side enforcement configured in repository Settings → Rules → Rulesets

Bicep:

// Use consistent naming conventions
// Include parameter descriptions
// Add output values
// Follow Azure naming best practices

Terraform:

# Use consistent naming conventions (CAF)
# Variables in variables.tf with descriptions and validation
# Outputs in outputs.tf
# AVM-TF modules preferred over raw resources
# Provider pinned to ~> 4.0 (AzureRM)
  • Use clear, concise language
  • Include code examples
  • Document prerequisites
  • Use Mermaid for explanatory diagrams in Markdown; use Excalidraw for architecture artifacts

This repository uses markdownlint for consistent formatting.

Running the linter:

Terminal window
# Check for issues
npm run lint:md
# Check links (docs/ only)
npm run lint:links
# Auto-fix issues
npm run lint:md:fix
⬆️ Back to Top## 🚀 Contribution Process

Note: For using Agentic InfraOps, create your own repo from the Accelerator template instead. The instructions below are for contributing back to this upstream project.

Terminal window
git clone https://github.com/YOUR-USERNAME/azure-agentic-infraops.git
cd azure-agentic-infraops
git remote add upstream https://github.com/jonathan-vella/azure-agentic-infraops.git

Use an approved prefix (see Branch Naming Convention above):

Terminal window
git checkout -b feat/your-feature-name
# or
git checkout -b fix/issue-description
# or domain-scoped:
git checkout -b docs/update-workflow-guide
  • Follow the guidelines above
  • Test any Bicep changes with bicep build and bicep lint
  • Test any Terraform changes with terraform fmt -check, terraform validate, and npm run validate:terraform
  • Validate markdown and links with npm run lint:md and npm run lint:links

For the full local-to-PR flow, see:

Terminal window
git add .
git commit -m "feat: add diagram generator improvements"
git push origin feature/your-feature-name

Note: commit message format is enforced by hooks and CI.

⬆️ Back to Top## 📝 Commit Message Format (Required)

This repository uses Conventional Commits with automated enforcement. Commit messages are validated by commitlint before each commit.

<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
TypeDescriptionVersion Bump
featNew featureMinor (1.x.0)
fixBug fixPatch (1.0.x)
docsDocumentation only changesNone
styleCode style (formatting, semicolons)None
refactorCode refactoring (no functional change)None
perfPerformance improvementsNone
testAdding or updating testsNone
buildBuild system or dependenciesNone
ciCI/CD configurationNone
choreMaintenance tasksNone
revertReverting a previous commitNone

For breaking changes, add ! after the type or include BREAKING CHANGE: in the footer:

Terminal window
# Breaking change indicator
git commit -m "feat!: redesign agent workflow architecture"
# Or with footer
git commit -m "feat: new output structure
BREAKING CHANGE: agent outputs now go to agent-output/ folder"

Breaking changes trigger a major version bump (x.0.0).

Terminal window
# Feature (minor version bump)
git commit -m "feat: add terraform validation agent"
git commit -m "feat(bicep): add diagnostic settings module"
# Bug fix (patch version bump)
git commit -m "fix: correct resource naming in Key Vault module"
git commit -m "fix(docs): update broken quickstart links"
# No version bump
git commit -m "docs: update workflow documentation"
git commit -m "chore: update dev container configuration"
git commit -m "refactor: simplify agent handoff logic"

Commits are automatically validated by the commit-msg hook. If your commit message doesn’t follow the format, you’ll see a helpful error with examples.

  1. Go to your fork on GitHub
  2. Click “New Pull Request”
  3. Fill out the PR template
  4. Link related issues
⬆️ Back to Top## 📝 Pull Request Checklist

Before submitting:

  • Code follows repository standards
  • Documentation updated if needed
  • Markdown files pass linting (npm run lint:md)
  • Docs links pass checks (npm run lint:links)
  • Bicep templates validate (bicep build + bicep lint) if applicable
  • Terraform configs validate (terraform validate + terraform fmt -check) if applicable
  • No hardcoded secrets or subscription IDs
  • Links work correctly
⬆️ Back to Top## 🤝 Community Standards
  • Be respectful and inclusive
  • Welcome newcomers
  • Focus on constructive feedback
  • No harassment or discrimination
  • Questions: GitHub Discussions
  • Issues: GitHub Issues
⬆️ Back to Top## 📄 License

By contributing, you agree that your contributions will be licensed under the MIT License.

section divider

Thank you for helping improve the Azure infrastructure workflow! 🚀