Skip to content

Contributing

The full contributing guide is maintained in the repository root and rendered on GitHub.

View CONTRIBUTING.md on GitHub

Quick Reference

  • Fork the repo and create a feature branch
  • New ARM collectors are declarative .psd1 files under manifests/collectors/<Category>/ — see Category Structure for the 18 category folders and their [ValidateSet]/alias plumbing in src/Invoke-AzureScout.ps1. There is no .ps1 template to copy from: a definition describes what to filter and what fields to produce (resource types, an optional filter, field expressions, the Excel export shape), and one shared interpreter runs it. See the decision record at docs/design/decisions/declarative-collectors.md for the full schema and worked examples.
  • New Entra ID collectors are catalog entries in src/collect/Get-ScoutEntraQueryCatalog.ps1, not separate files — see Entra Modules for the current 17-entry catalog.
  • Before you add a resource type, confirm Azure actually has it. Six collectors were retired 2026-07-31 because they declared types that do not exist (Hybrid/ArcSites, Compute/CloudServices, Storage/DataLakeStoreGen1, Databases/POSTGRE, Monitor/AppInsightsContinuousExport, Monitor/AppInsightsWorkItems) — see Category Reference. Every declared type is checked against a real Azure provider/type catalogue by tests/ResourceTypeExistence.Tests.ps1; see Testing: the resource-type existence gate.
  • Fixtures for the collector's own test are generated from its .psd1 definition by scripts/New-ScoutCollectorFixture.ps1, not hand-written — see Testing for how the golden tests use them.
  • Open a PR against main — describe what resource type you added and why.

See ARM Modules and Entra Modules for the current catalog.

Released under the MIT License.