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
.psd1files undermanifests/collectors/<Category>/— see Category Structure for the 18 category folders and their[ValidateSet]/alias plumbing insrc/Invoke-AzureScout.ps1. There is no.ps1template 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 atdocs/design/decisions/declarative-collectors.mdfor 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 bytests/ResourceTypeExistence.Tests.ps1; see Testing: the resource-type existence gate. - Fixtures for the collector's own test are generated from its
.psd1definition byscripts/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.