{"owner":"hashicorp","repo":"terraform-provider-azurerm","hasSkills":true,"totalSkillsCount":25,"totalTokensCount":8077,"categories":["plugin-manifest","anthropic-skill","subagent-persona"],"hasMcp":false,"mcpConfig":null,"found":["internal/tools/pr-guide-suggestions/README.md","internal/tools/generator-resource-id/README.md","internal/tools/preview-api-version-linter/README.md","internal/tools/generator-services/README.md","internal/tools/generator-typed-model/README.md","internal/tools/document-lint/README.md","internal/tools/generator-schema-snapshot/README.md","internal/tools/website-scaffold/README.md","examples/vm-scale-set/linux/extensions/README.md","examples/vm-scale-set/windows/extensions/README.md","examples/vm-scale-set/extensions/custom-script/README.md","internal/tools/update-api-version/README.md","vendor/github.com/hashicorp/go-azure-sdk/resource-manager/azurestackhci/2024-01-01/extensions/README.md","vendor/github.com/hashicorp/go-azure-sdk/resource-manager/cdn/2025-12-01/rules/README.md","vendor/github.com/hashicorp/go-azure-sdk/resource-manager/compute/2024-03-01/virtualmachineextensions/README.md","vendor/github.com/hashicorp/go-azure-sdk/resource-manager/compute/2025-04-01/virtualmachinescalesetextensions/README.md","vendor/github.com/hashicorp/go-azure-sdk/resource-manager/datadog/2021-03-01/rules/README.md","vendor/github.com/hashicorp/go-azure-sdk/resource-manager/elastic/2023-06-01/rules/README.md","vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hdinsight/2021-06-01/extensions/README.md","vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2022-11-10/machineextensions/README.md","vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2024-07-10/extensions/README.md","vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2024-07-10/machineextensions/README.md","vendor/github.com/hashicorp/go-azure-sdk/resource-manager/kubernetesconfiguration/2024-11-01/extensions/README.md","vendor/github.com/hashicorp/go-azure-sdk/resource-manager/servicebus/2026-01-01/rules/README.md","vendor/github.com/hashicorp/go-azure-sdk/resource-manager/storagemover/2023-03-01/agents/README.md"],"skills":{"internal/tools/pr-guide-suggestions/README.md":"# pr-guide-suggestions — AST-based schema linter\n\nA fast, AST-based linter for the AzureRM provider's **resource** and **data\nsource** schemas. It implements the pr-guide-suggestions rules (`SL001`–`SL013`) as\nsmall checks over a syntactic schema tree built with the standard `go/ast`.\n\nIt is a normal package of the provider module (at `internal/tools/pr-guide-suggestions`)\nwith **no external dependencies** — only the Go standard library — so it adds\nnothing to the provider's `go.mod` or vendor tree and needs no build of the\nprovider itself.\n\n## Usage\n\nRun it from the repository root:\n\n```bash\n# list the available rules\ngo run ./internal/tools/pr-guide-suggestions list\n\n# lint a single file\ngo run ./internal/tools/pr-guide-suggestions check internal/services/foo/foo_resource.go\n\n# lint a directory tree\ngo run ./internal/tools/pr-guide-suggestions check internal/services/foo\n\n# apply auto-fixable fixes (property renames) in place\ngo run ./internal/tools/pr-guide-suggestions check -fix internal/services/foo\n\n# run or disable specific rules\ngo run ./internal/tools/pr-guide-suggestions check -rules SL002,SL007 internal/services/foo\ngo run ./internal/tools/pr-guide-suggestions check -disable SL001 internal/services/foo\n\n# machine-readable output\ngo run ./internal/tools/pr-guide-suggestions check -format json internal/services/foo\n\n# lint only the schema properties added since a base branch (see Diff mode)\ngo run ./internal/tools/pr-guide-suggestions check -diff-base origin/main\n```\n\nOr build a binary once and reuse it:\n\n```bash\ngo build -o /tmp/pr-guide-suggestions ./internal/tools/pr-guide-suggestions\n/tmp/pr-guide-suggestions check internal/services/foo/foo_resource.go\n```\n\n### Flags (`check`)\n\n| Flag | Default | Description |\n|------|---------|-------------|\n| `-C` | `.` | repository root; targets and `git` run relative to it |\n| `-format` | `text` | output format: `text` or `json` |\n| `-fix` | `false` | apply auto-fixable fixes (property renames) to files in place (see [Applying fixes](#applying-fixes)) |\n| `-diff-base` | | only report findings on lines added since this git ref (see [Diff mode](#diff-mode)) |\n| `-rules` | | comma-separated rule IDs to run (default: all) |\n| `-disable` | | comma-separated rule IDs to disable (takes precedence) |\n| `-fail-on-error` | `true` | exit non-zero when any `error`-severity finding is present |\n\n## Rules\n\n| ID | Name | Severity | Checks |\n|----|------|----------|--------|\n| SL001 | property-description-required | warning | every property sets a non-empty `Description` |\n| SL002 | single-property-block | warning | a `MaxItems: 1` block with a single nested property should be flattened |\n| SL003 | limits-on-non-collection | error | `MinItems`/`MaxItems` are only set on `TypeList`/`TypeSet` |\n| SL004 | avoid-none-value | warning | a user-settable enum should not accept `None`/`Off`/`Default`/`Disabled`; detects `StringInSlice` literals, `string(pkg.…None)` enum constants, and validators nested in `validation.Any`/`All` |\n| SL005 | validation-required | warning | user-settable string/numeric arguments set validation |\n| SL006 | block-needs-constraint | warning | a block with no required fields sets `AtLeastOneOf`/`ExactlyOneOf` |\n| SL007 | array-limits | warning | a scalar array declares `MaxItems` |\n| SL008 | sku-field-naming | warning | group multiple `sku_*` fields into a single `sku` block |\n| SL009 | unit-in-naming | warning | unit-of-measure suffixes use the `_in_<unit>` form (e.g. `size_in_mb`) |\n| SL010 | no-abbreviations | warning | property names use full words, not abbreviations |\n| SL011 | redundant-is-prefix | warning | boolean names do not start with a redundant `is_` |\n| SL012 | redundant-suffix | warning | names drop a redundant grouping-word suffix (`_properties`/`_config`/`_profile`) |\n| SL013 | id-reference-validation | warning | `*_id` references use a resource-specific ID validator or `IsUUID`, not just `StringIsNotEmpty` |\n\nOnly `SL003` is `error` severity; the rest are `warning`. With\n`-fail-on-error` (the default), the process exits non-zero only when an `error`\nfinding is present.\n\n### Coverage note\n\nBecause the linter reads source rather than the compiled schema, properties\ndefined by opaque helper calls (for example `commonschema.Location()` or\n`commonschema.ResourceIDReferenceOptional(...)`) have no visible schema body.\nRules that need the schema (type, validation, limits) skip these; name-only\nrules (SL009, SL010, SL012) still apply. This is by design: newly added\nproperties in a pull request are written as inline `*pluginsdk.Schema` literals,\nwhich are fully analysed.\n\nTwo consequences follow for whole-resource runs (they do not affect diff mode,\nwhich only lints newly added inline properties):\n\n- **External composition is invisible.** Enum values sourced from an external\n  SDK function (`validation.StringInSlice(pkg.PossibleValuesForX(), ...)`) and\n  schemas produced by `commonschema.*` helpers live in other modules, so their\n  properties cannot be inspected. The compiled-schema linter can, because it\n  evaluates that code at runtime.\n- **Local schema helpers are resolved.** When a property value or a block's\n  `Elem` schema is a call to a package-level `schemaXxx()` helper that returns a\n  literal (directly, via `s := ...; return s`, or via an inline `func() {...}()`),\n  the linter follows it, so block-level rules run and children are reported with\n  full dotted paths. Helpers that build their map imperatively (appending to it\n  rather than returning a literal), or that live in another package, are not\n  followed; their leaf properties are then linted as their own root instead.\n\n## Diff mode\n\nIn a pull request, existing properties usually cannot be changed to satisfy a\nrule — renaming a released property is a breaking change. Diff mode reports only\nfindings on the lines a change set **adds**.\n\nPass `-diff-base <ref>`. The tool computes the merge base of `<ref>` and `HEAD`,\ndiffs the working tree against it (restricted to resource and data source\nfiles), and reports a finding only when the property's map key is on an added\nline. A brand new resource is linted in full; a new child added to a pre-existing\nblock is linted while its siblings are not.\n\n```bash\nGITHUB_BASE_REF=main bash ./scripts/checks/pr-guide-suggestions.sh\n```\n\n## Applying fixes\n\nBy default the linter is read-only: it reports findings (with a suggested\nremediation for each fixable one) but does not touch your files. Pass `-fix` to\n*apply* the auto-fixable findings in place. Today the naming rules\n(`SL009`–`SL012`) are auto-applicable: each is a **rename**, and applying it\nreplaces every quoted occurrence of the property name across the file — not just\nthe schema map key, but also its `d.Get`/`d.Set` calls, `tfschema` struct tags\nand `AtLeastOneOf`/`ExactlyOneOf`/`ConflictsWith` cross-references:\n\n```bash\n# rename \"vm_count\" -> \"virtual_machine_count\" everywhere in the file\ngo run ./internal/tools/pr-guide-suggestions check -rules SL010 -fix internal/services/foo/foo_resource.go\n```\n\n```text\nfixed internal/services/foo/foo_resource.go: renamed \"vm_count\" → \"virtual_machine_count\"\n\napplied 1 fix(es)\n```\n\nDetails and caveats:\n\n- Replacement matches the name as a whole **path segment** inside string\n  literals — bounded by a double quote or a dot — so both the standalone key\n  (`\"vm_count\"`) and dotted cross-field references (`\"vm_count.0.child\"` in\n  `AtLeastOneOf`/`ConflictsWith`/`d.Get`) are updated, while superstrings like\n  `\"vm_count_total\"`, bare words in comments and the Go field identifier\n  (`VmCount`) are left untouched. Rename the Go field yourself if you want it to\n  match.\n- Every matching occurrence in the file is replaced. If two blocks happen to\n  share a child name, both are renamed; review the diff.\n- Non-rename fixable findings (`SL002` flatten, `SL003` remove limits) are\n  structural and are **not** auto-applied — `-fix` reports them as remaining\n  work.\n- `-fix` writes files in place; run it on a clean working tree so you can review\n  the change with `git diff`. Re-run the linter afterwards to converge on any\n  follow-on findings and to reformat with `gofmt`/`goimports` if needed.\n\n## Adding a rule\n\n1. Add a `slNNN.go` file in `rules/` defining a `*Rule` with a `Check` function\n   that iterates the property nodes:\n\n   ```go\n   var slNNN = &Rule{\n       ID: \"SLNNN\", Name: \"my-rule\", Severity: Warning,\n       Check: checkSLNNN,\n   }\n\n   func checkSLNNN(res *schematree.Result, report ReportFunc) {\n       for _, n := range res.All {\n           // inspect n.Name / n.Path / n.Schema and call report(n, msg, fix)\n       }\n   }\n   ```\n\n2. Register it by appending to `Registry` in [rules/rules.go](rules/rules.go).\n3. Add a table-driven test alongside it (see the existing `rules/slNNN_test.go`).\n\nTo make a rule fixable, set `Fixable: true` and pass a `*Fix` as the last\nargument to `report` (pass `nil` when there is no fix). A `Fix` with only a\n`Suggestion` is printed as the remediation hint; a `Fix` that also sets `Rename`\nto the new property name is auto-applied by `-fix`:\n\n```go\nreport(n, msg, &Fix{\n    Suggestion: fmt.Sprintf(\"rename %q to %q\", n.Name, preferred),\n    Rename:     preferred,\n})\n```\n","internal/tools/generator-resource-id/README.md":"## Generator: Resource ID\n\n> **Note:** Resource ID Formatters, Parsers and Structs are now available in [`hashicorp/go-azure-sdk`](https://github.com/hashicorp/go-azure-sdk) and [`commonids` within `hashicorp/go-azure-helpers`](https://github.com/hashicorp/go-azure-helpers/tree/main/resourcemanager/commonids), where available those Resource ID's can be used directly - at this point this package is mostly for legacy resources which haven't yet been migrated to `hashicorp/go-azure-sdk`.\n\nEach Service Definition contains one or more Resource ID's - this tool allows the generation of:\n\n* Resource ID Formatters\n* Resource ID Parsers\n* Resource ID Structs\n\nThis is run via go:generate whenever the provider is compiled - at this time this doesn't wipe an existing \"parse\" folder so it's possible to mix and match if necessary.\n\n## Example Usage\n\n```\ngo run main.go -path=./ -name=MyResourceType -id=/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.AnalysisServices/servers/Server1\n```\n\n## Arguments\n\n* `help` - Show help?\n\n* `id` - An example of the Azure Resource ID for this Resource.\n\n* `name` - The name of this Resource Type, without the Service Name. For example `AnalysisServicesServer` becomes `Server`.\n\n* `path` - The Relative Path to the Service Package.\n\n* `rewrite` - should an `insensitive` parser also be generated to allow for these ID's being rewritten?\n","internal/tools/preview-api-version-linter/README.md":"## Tool: `preview-api-version-linter`\n\nCheck and fail if preview ARM API version is imported in the vendor folder. Exceptions can be made for specific\ncircumstances. More info: https://github.com/hashicorp/terraform-provider-azurerm/blob/main/contributing/topics/guide-api-version.md.","internal/tools/generator-services/README.md":"## Generator: Services\n\nEach Service Definition contains metadata (such as the Display Name & Website Categories) required in other parts of the codebase, for easier grouping.\n\nThis generator takes that metadata and uses it to generate two things:\n\n1. Website Categories - which validates the categories used in the website exist, required for website deployments to happen.\n2. Service Definitions - generates the list of services used to run the Acceptance Tests\n3. GitHub Labels - generates the list of tags which should be assigned to a pull request when files within this path are changed. \n\nThis is run via go:generate whenever the \"SupportedServices\" array is changed so that this is kept up-to-date.\n\n## Example Usage\n\n```\ngo run main.go -path=../../path/to/root-directory\n```\n\n## Arguments\n\n* `help` - Show help?\n\n* `path` - The Relative Path to the root of the repository\n","internal/tools/generator-typed-model/README.md":"## Typed Model Generator\n\nThis application generates the Go structures for a typed resource by providing its schema.\n\n## Example Usage\n\nGiven following schema of the `azurerm_resource_group` and ensure the `azurerm_resource_group` is registered as a resource to the provider:\n\n```go\nSchema: map[string]*pluginsdk.Schema{\n    \"name\": commonschema.ResourceGroupName(),\n\n    \"location\": commonschema.Location(),\n\n    \"tags\": commonschema.Tags(),\n},\n```\n\nTo generate its corresponding typed SDK model, run the following command:\n\n```go\n$ go run main.go azurerm_resource_group\n```\n\nThis generates:\n\n```go\npackage main\n\ntype ResourceGroupModel struct {\n        Location string            `tfschema:\"location\"`\n        Name     string            `tfschema:\"name\"`\n        Tags     map[string]string `tfschema:\"tags\"`\n}\n```\n","internal/tools/document-lint/README.md":"# Introduction \r\nThis tool detects and fixes inconsistencies in the AzureRM Terraform Provider resource documentation.\r\n\r\n## The following can be checked/fixed:\r\n1. Formatting of documentation.\r\n2. The Required/Optional value of properties.\r\n3. The Default value of properties.\r\n4. The ForceNew value of properties.\r\n5. The TimeOut value of create/update/read/delete functions.\r\n6. Properties that are present in the schema but missing in the documentation and vice versa.\r\n7. The list of PossibleValues.\r\n\r\n# Getting Started\r\n```bash\r\n# print the usage\r\ngo run main.go -h\r\n\r\n# check documents and print the error information\r\ngo run main.go check\r\n\r\n# check and try to fix existing errors\r\ngo run main.go fix\r\n```","internal/tools/generator-schema-snapshot/README.md":"## Schema Snapshot Generator\n\nThis application generates the schema snapshot for a resource, mainly to be used for [resource state migration](https://developer.hashicorp.com/terraform/plugin/sdkv2/resources/state-migration).\n\n## Example Usage\n\n```\n$ go run main.go <resource_type>\n```\n\nE.g.\n\n```\n$ go run main.go azurerm_resource_group\n```\n\n## Arguments\n\n* `resource_type`: The resource type to generate the schema. \n","internal/tools/website-scaffold/README.md":"## Website Scaffolder\n\nThis application scaffolds the documentation for a Data Source/Resource.\n\n**Note:** the documentation generated from this application is intended to be a starting point, which when finished requires human review - rather than generating a finished product. \n\n## Example Usage\n\nGenerating document with minimal Terraform configuration as example:\n\n```\n$ go run main.go -name azurerm_resource_group -brand-name \"Resource Group\" -type \"resource\" -resource-id \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1\" -website-path ../../../website/\n```\n\nGenerating document with Terraform configuration from AccTest:\n\n```\n$ go run main.go -name azurerm_resource_group -brand-name \"Resource Group\" -type \"resource\" -resource-id \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1\" -website-path ../../../website/ -example -root-dir ../../.. -service-pkg ./internal/services/resource -testcase TestAccResourceGroup_basic\n```\n\n## Arguments\n\n* `-name` - (Required) The Name used for the Resource in Terraform e.g. `azurerm_resource_group`\n\n* `-brand-name` - (Required) The Brand Name used for this Resource in Azure e.g. `Resource Group` or `App Service (Web Apps)`\n\n* `-type` - (Required) The Type of Documentation to generate. Possible values are `data` (for a Data Source) or `resource` (for a Resource).\n\n* `-resource-id` - (Required when scaffolding a Resource) An Azure Resource ID which can be used as a placeholder in the import documentation.\n\n* `-website-path` - (Required) The path to the `./website` directory in the root of this repository.\n\n* `-example` - (Optional) Whether to generate the Terraform configuration example from AccTest?\n\n* `-root-dir` - (Optional) The path to the project root. Required when `-example` is set.\n\n* `-service-dir` - (Optional) The relative path to the service package (e.g. `./internal/services/network`). Required when `-example` is set.\n\n* `-test-case` - (Optional) The name of the AccTest where the Terraform configuration derives from. Required when `-example` is set.\n","examples/vm-scale-set/linux/extensions/README.md":"## Example: Linux Virtual Machine Scale Set with VM Extensions\n\nThis example provisions a basic Linux Virtual Machine Scale Set using a password for authentication and a `CustomScript` extension.\n","examples/vm-scale-set/windows/extensions/README.md":"## Example: Windows Virtual Machine Scale Set with VM Extensions\n\nThis example provisions a basic Windows Virtual Machine Scale Set with two VM Extensions.\n","examples/vm-scale-set/extensions/custom-script/README.md":"## Example: Custom Script Extension\n\nThis example configures a Custom Script Extension on a Linux Virtual Machine Scale Set - however the example is essentially the same for a Windows Virtual Machine Scale Sets too.\n","internal/tools/update-api-version/README.md":"## Tool: `update-api-version`\n\nThis tool automatically updates import references from one API version to another API version when using `hashicorp/go-azure-sdk`.\n\nThis works against a Service and takes both the old and the new API versions, for example:\n\n```sh\n./update-api-version -service=\"advisor\" -old-api-version=\"2020-01-01\" -new-api-version=\"2022-01-01\"\n```\n\nThe arguments are:\n\n* `service` - the name of the Service Package (e.g. `compute`, `network` etc).\n* `old-api-version` - the existing API version (for example `2020-01-01` or `2020-01-01-preview`) which should be replaced.\n* `new-api-version` - the new API version which should be used in place of the value for `old-api-version`.\n\n---\n\nThis tool supports updating both explicit SDK references, that is:\n\n```\nimport (\n    \"github.com/hashicorp/go-azure-sdk/resource-manager/{service}/{api-version}/{sdk}\"\n)\n```\n\nas well as Meta Clients (which includes updating the import alias):\n\n```\nimport (\n    service_api_version \"github.com/hashicorp/go-azure-sdk/resource-manager/{service}/{api-version}\"\n)\n```\n","vendor/github.com/hashicorp/go-azure-sdk/resource-manager/azurestackhci/2024-01-01/extensions/README.md":"# extensions Documentation\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/azurestackhci/2024-01-01/extensions/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/azurestackhci/2024-01-01/extensions/README.md)","vendor/github.com/hashicorp/go-azure-sdk/resource-manager/cdn/2025-12-01/rules/README.md":"# Rules Skill\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/cdn/2025-12-01/rules/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/cdn/2025-12-01/rules/README.md)","vendor/github.com/hashicorp/go-azure-sdk/resource-manager/compute/2024-03-01/virtualmachineextensions/README.md":"# virtualmachineextensions Documentation\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/compute/2024-03-01/virtualmachineextensions/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/compute/2024-03-01/virtualmachineextensions/README.md)","vendor/github.com/hashicorp/go-azure-sdk/resource-manager/compute/2025-04-01/virtualmachinescalesetextensions/README.md":"# virtualmachinescalesetextensions Documentation\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/compute/2025-04-01/virtualmachinescalesetextensions/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/compute/2025-04-01/virtualmachinescalesetextensions/README.md)","vendor/github.com/hashicorp/go-azure-sdk/resource-manager/datadog/2021-03-01/rules/README.md":"# Rules Skill\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/datadog/2021-03-01/rules/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/datadog/2021-03-01/rules/README.md)","vendor/github.com/hashicorp/go-azure-sdk/resource-manager/elastic/2023-06-01/rules/README.md":"# Rules Skill\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/elastic/2023-06-01/rules/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/elastic/2023-06-01/rules/README.md)","vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hdinsight/2021-06-01/extensions/README.md":"# extensions Documentation\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hdinsight/2021-06-01/extensions/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hdinsight/2021-06-01/extensions/README.md)","vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2022-11-10/machineextensions/README.md":"# machineextensions Documentation\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2022-11-10/machineextensions/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2022-11-10/machineextensions/README.md)","vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2024-07-10/extensions/README.md":"# extensions Documentation\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2024-07-10/extensions/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2024-07-10/extensions/README.md)","vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2024-07-10/machineextensions/README.md":"# machineextensions Documentation\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2024-07-10/machineextensions/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2024-07-10/machineextensions/README.md)","vendor/github.com/hashicorp/go-azure-sdk/resource-manager/kubernetesconfiguration/2024-11-01/extensions/README.md":"# extensions Documentation\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/kubernetesconfiguration/2024-11-01/extensions/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/kubernetesconfiguration/2024-11-01/extensions/README.md)","vendor/github.com/hashicorp/go-azure-sdk/resource-manager/servicebus/2026-01-01/rules/README.md":"# Rules Skill\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/servicebus/2026-01-01/rules/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/servicebus/2026-01-01/rules/README.md)","vendor/github.com/hashicorp/go-azure-sdk/resource-manager/storagemover/2023-03-01/agents/README.md":"# Subagent: readme\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/storagemover/2023-03-01/agents/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/storagemover/2023-03-01/agents/README.md)"},"files":{"internal/tools/pr-guide-suggestions/README.md":"# pr-guide-suggestions — AST-based schema linter\n\nA fast, AST-based linter for the AzureRM provider's **resource** and **data\nsource** schemas. It implements the pr-guide-suggestions rules (`SL001`–`SL013`) as\nsmall checks over a syntactic schema tree built with the standard `go/ast`.\n\nIt is a normal package of the provider module (at `internal/tools/pr-guide-suggestions`)\nwith **no external dependencies** — only the Go standard library — so it adds\nnothing to the provider's `go.mod` or vendor tree and needs no build of the\nprovider itself.\n\n## Usage\n\nRun it from the repository root:\n\n```bash\n# list the available rules\ngo run ./internal/tools/pr-guide-suggestions list\n\n# lint a single file\ngo run ./internal/tools/pr-guide-suggestions check internal/services/foo/foo_resource.go\n\n# lint a directory tree\ngo run ./internal/tools/pr-guide-suggestions check internal/services/foo\n\n# apply auto-fixable fixes (property renames) in place\ngo run ./internal/tools/pr-guide-suggestions check -fix internal/services/foo\n\n# run or disable specific rules\ngo run ./internal/tools/pr-guide-suggestions check -rules SL002,SL007 internal/services/foo\ngo run ./internal/tools/pr-guide-suggestions check -disable SL001 internal/services/foo\n\n# machine-readable output\ngo run ./internal/tools/pr-guide-suggestions check -format json internal/services/foo\n\n# lint only the schema properties added since a base branch (see Diff mode)\ngo run ./internal/tools/pr-guide-suggestions check -diff-base origin/main\n```\n\nOr build a binary once and reuse it:\n\n```bash\ngo build -o /tmp/pr-guide-suggestions ./internal/tools/pr-guide-suggestions\n/tmp/pr-guide-suggestions check internal/services/foo/foo_resource.go\n```\n\n### Flags (`check`)\n\n| Flag | Default | Description |\n|------|---------|-------------|\n| `-C` | `.` | repository root; targets and `git` run relative to it |\n| `-format` | `text` | output format: `text` or `json` |\n| `-fix` | `false` | apply auto-fixable fixes (property renames) to files in place (see [Applying fixes](#applying-fixes)) |\n| `-diff-base` | | only report findings on lines added since this git ref (see [Diff mode](#diff-mode)) |\n| `-rules` | | comma-separated rule IDs to run (default: all) |\n| `-disable` | | comma-separated rule IDs to disable (takes precedence) |\n| `-fail-on-error` | `true` | exit non-zero when any `error`-severity finding is present |\n\n## Rules\n\n| ID | Name | Severity | Checks |\n|----|------|----------|--------|\n| SL001 | property-description-required | warning | every property sets a non-empty `Description` |\n| SL002 | single-property-block | warning | a `MaxItems: 1` block with a single nested property should be flattened |\n| SL003 | limits-on-non-collection | error | `MinItems`/`MaxItems` are only set on `TypeList`/`TypeSet` |\n| SL004 | avoid-none-value | warning | a user-settable enum should not accept `None`/`Off`/`Default`/`Disabled`; detects `StringInSlice` literals, `string(pkg.…None)` enum constants, and validators nested in `validation.Any`/`All` |\n| SL005 | validation-required | warning | user-settable string/numeric arguments set validation |\n| SL006 | block-needs-constraint | warning | a block with no required fields sets `AtLeastOneOf`/`ExactlyOneOf` |\n| SL007 | array-limits | warning | a scalar array declares `MaxItems` |\n| SL008 | sku-field-naming | warning | group multiple `sku_*` fields into a single `sku` block |\n| SL009 | unit-in-naming | warning | unit-of-measure suffixes use the `_in_<unit>` form (e.g. `size_in_mb`) |\n| SL010 | no-abbreviations | warning | property names use full words, not abbreviations |\n| SL011 | redundant-is-prefix | warning | boolean names do not start with a redundant `is_` |\n| SL012 | redundant-suffix | warning | names drop a redundant grouping-word suffix (`_properties`/`_config`/`_profile`) |\n| SL013 | id-reference-validation | warning | `*_id` references use a resource-specific ID validator or `IsUUID`, not just `StringIsNotEmpty` |\n\nOnly `SL003` is `error` severity; the rest are `warning`. With\n`-fail-on-error` (the default), the process exits non-zero only when an `error`\nfinding is present.\n\n### Coverage note\n\nBecause the linter reads source rather than the compiled schema, properties\ndefined by opaque helper calls (for example `commonschema.Location()` or\n`commonschema.ResourceIDReferenceOptional(...)`) have no visible schema body.\nRules that need the schema (type, validation, limits) skip these; name-only\nrules (SL009, SL010, SL012) still apply. This is by design: newly added\nproperties in a pull request are written as inline `*pluginsdk.Schema` literals,\nwhich are fully analysed.\n\nTwo consequences follow for whole-resource runs (they do not affect diff mode,\nwhich only lints newly added inline properties):\n\n- **External composition is invisible.** Enum values sourced from an external\n  SDK function (`validation.StringInSlice(pkg.PossibleValuesForX(), ...)`) and\n  schemas produced by `commonschema.*` helpers live in other modules, so their\n  properties cannot be inspected. The compiled-schema linter can, because it\n  evaluates that code at runtime.\n- **Local schema helpers are resolved.** When a property value or a block's\n  `Elem` schema is a call to a package-level `schemaXxx()` helper that returns a\n  literal (directly, via `s := ...; return s`, or via an inline `func() {...}()`),\n  the linter follows it, so block-level rules run and children are reported with\n  full dotted paths. Helpers that build their map imperatively (appending to it\n  rather than returning a literal), or that live in another package, are not\n  followed; their leaf properties are then linted as their own root instead.\n\n## Diff mode\n\nIn a pull request, existing properties usually cannot be changed to satisfy a\nrule — renaming a released property is a breaking change. Diff mode reports only\nfindings on the lines a change set **adds**.\n\nPass `-diff-base <ref>`. The tool computes the merge base of `<ref>` and `HEAD`,\ndiffs the working tree against it (restricted to resource and data source\nfiles), and reports a finding only when the property's map key is on an added\nline. A brand new resource is linted in full; a new child added to a pre-existing\nblock is linted while its siblings are not.\n\n```bash\nGITHUB_BASE_REF=main bash ./scripts/checks/pr-guide-suggestions.sh\n```\n\n## Applying fixes\n\nBy default the linter is read-only: it reports findings (with a suggested\nremediation for each fixable one) but does not touch your files. Pass `-fix` to\n*apply* the auto-fixable findings in place. Today the naming rules\n(`SL009`–`SL012`) are auto-applicable: each is a **rename**, and applying it\nreplaces every quoted occurrence of the property name across the file — not just\nthe schema map key, but also its `d.Get`/`d.Set` calls, `tfschema` struct tags\nand `AtLeastOneOf`/`ExactlyOneOf`/`ConflictsWith` cross-references:\n\n```bash\n# rename \"vm_count\" -> \"virtual_machine_count\" everywhere in the file\ngo run ./internal/tools/pr-guide-suggestions check -rules SL010 -fix internal/services/foo/foo_resource.go\n```\n\n```text\nfixed internal/services/foo/foo_resource.go: renamed \"vm_count\" → \"virtual_machine_count\"\n\napplied 1 fix(es)\n```\n\nDetails and caveats:\n\n- Replacement matches the name as a whole **path segment** inside string\n  literals — bounded by a double quote or a dot — so both the standalone key\n  (`\"vm_count\"`) and dotted cross-field references (`\"vm_count.0.child\"` in\n  `AtLeastOneOf`/`ConflictsWith`/`d.Get`) are updated, while superstrings like\n  `\"vm_count_total\"`, bare words in comments and the Go field identifier\n  (`VmCount`) are left untouched. Rename the Go field yourself if you want it to\n  match.\n- Every matching occurrence in the file is replaced. If two blocks happen to\n  share a child name, both are renamed; review the diff.\n- Non-rename fixable findings (`SL002` flatten, `SL003` remove limits) are\n  structural and are **not** auto-applied — `-fix` reports them as remaining\n  work.\n- `-fix` writes files in place; run it on a clean working tree so you can review\n  the change with `git diff`. Re-run the linter afterwards to converge on any\n  follow-on findings and to reformat with `gofmt`/`goimports` if needed.\n\n## Adding a rule\n\n1. Add a `slNNN.go` file in `rules/` defining a `*Rule` with a `Check` function\n   that iterates the property nodes:\n\n   ```go\n   var slNNN = &Rule{\n       ID: \"SLNNN\", Name: \"my-rule\", Severity: Warning,\n       Check: checkSLNNN,\n   }\n\n   func checkSLNNN(res *schematree.Result, report ReportFunc) {\n       for _, n := range res.All {\n           // inspect n.Name / n.Path / n.Schema and call report(n, msg, fix)\n       }\n   }\n   ```\n\n2. Register it by appending to `Registry` in [rules/rules.go](rules/rules.go).\n3. Add a table-driven test alongside it (see the existing `rules/slNNN_test.go`).\n\nTo make a rule fixable, set `Fixable: true` and pass a `*Fix` as the last\nargument to `report` (pass `nil` when there is no fix). A `Fix` with only a\n`Suggestion` is printed as the remediation hint; a `Fix` that also sets `Rename`\nto the new property name is auto-applied by `-fix`:\n\n```go\nreport(n, msg, &Fix{\n    Suggestion: fmt.Sprintf(\"rename %q to %q\", n.Name, preferred),\n    Rename:     preferred,\n})\n```\n","internal/tools/generator-resource-id/README.md":"## Generator: Resource ID\n\n> **Note:** Resource ID Formatters, Parsers and Structs are now available in [`hashicorp/go-azure-sdk`](https://github.com/hashicorp/go-azure-sdk) and [`commonids` within `hashicorp/go-azure-helpers`](https://github.com/hashicorp/go-azure-helpers/tree/main/resourcemanager/commonids), where available those Resource ID's can be used directly - at this point this package is mostly for legacy resources which haven't yet been migrated to `hashicorp/go-azure-sdk`.\n\nEach Service Definition contains one or more Resource ID's - this tool allows the generation of:\n\n* Resource ID Formatters\n* Resource ID Parsers\n* Resource ID Structs\n\nThis is run via go:generate whenever the provider is compiled - at this time this doesn't wipe an existing \"parse\" folder so it's possible to mix and match if necessary.\n\n## Example Usage\n\n```\ngo run main.go -path=./ -name=MyResourceType -id=/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.AnalysisServices/servers/Server1\n```\n\n## Arguments\n\n* `help` - Show help?\n\n* `id` - An example of the Azure Resource ID for this Resource.\n\n* `name` - The name of this Resource Type, without the Service Name. For example `AnalysisServicesServer` becomes `Server`.\n\n* `path` - The Relative Path to the Service Package.\n\n* `rewrite` - should an `insensitive` parser also be generated to allow for these ID's being rewritten?\n","internal/tools/preview-api-version-linter/README.md":"## Tool: `preview-api-version-linter`\n\nCheck and fail if preview ARM API version is imported in the vendor folder. Exceptions can be made for specific\ncircumstances. More info: https://github.com/hashicorp/terraform-provider-azurerm/blob/main/contributing/topics/guide-api-version.md.","internal/tools/generator-services/README.md":"## Generator: Services\n\nEach Service Definition contains metadata (such as the Display Name & Website Categories) required in other parts of the codebase, for easier grouping.\n\nThis generator takes that metadata and uses it to generate two things:\n\n1. Website Categories - which validates the categories used in the website exist, required for website deployments to happen.\n2. Service Definitions - generates the list of services used to run the Acceptance Tests\n3. GitHub Labels - generates the list of tags which should be assigned to a pull request when files within this path are changed. \n\nThis is run via go:generate whenever the \"SupportedServices\" array is changed so that this is kept up-to-date.\n\n## Example Usage\n\n```\ngo run main.go -path=../../path/to/root-directory\n```\n\n## Arguments\n\n* `help` - Show help?\n\n* `path` - The Relative Path to the root of the repository\n","internal/tools/generator-typed-model/README.md":"## Typed Model Generator\n\nThis application generates the Go structures for a typed resource by providing its schema.\n\n## Example Usage\n\nGiven following schema of the `azurerm_resource_group` and ensure the `azurerm_resource_group` is registered as a resource to the provider:\n\n```go\nSchema: map[string]*pluginsdk.Schema{\n    \"name\": commonschema.ResourceGroupName(),\n\n    \"location\": commonschema.Location(),\n\n    \"tags\": commonschema.Tags(),\n},\n```\n\nTo generate its corresponding typed SDK model, run the following command:\n\n```go\n$ go run main.go azurerm_resource_group\n```\n\nThis generates:\n\n```go\npackage main\n\ntype ResourceGroupModel struct {\n        Location string            `tfschema:\"location\"`\n        Name     string            `tfschema:\"name\"`\n        Tags     map[string]string `tfschema:\"tags\"`\n}\n```\n","internal/tools/document-lint/README.md":"# Introduction \r\nThis tool detects and fixes inconsistencies in the AzureRM Terraform Provider resource documentation.\r\n\r\n## The following can be checked/fixed:\r\n1. Formatting of documentation.\r\n2. The Required/Optional value of properties.\r\n3. The Default value of properties.\r\n4. The ForceNew value of properties.\r\n5. The TimeOut value of create/update/read/delete functions.\r\n6. Properties that are present in the schema but missing in the documentation and vice versa.\r\n7. The list of PossibleValues.\r\n\r\n# Getting Started\r\n```bash\r\n# print the usage\r\ngo run main.go -h\r\n\r\n# check documents and print the error information\r\ngo run main.go check\r\n\r\n# check and try to fix existing errors\r\ngo run main.go fix\r\n```","internal/tools/generator-schema-snapshot/README.md":"## Schema Snapshot Generator\n\nThis application generates the schema snapshot for a resource, mainly to be used for [resource state migration](https://developer.hashicorp.com/terraform/plugin/sdkv2/resources/state-migration).\n\n## Example Usage\n\n```\n$ go run main.go <resource_type>\n```\n\nE.g.\n\n```\n$ go run main.go azurerm_resource_group\n```\n\n## Arguments\n\n* `resource_type`: The resource type to generate the schema. \n","internal/tools/website-scaffold/README.md":"## Website Scaffolder\n\nThis application scaffolds the documentation for a Data Source/Resource.\n\n**Note:** the documentation generated from this application is intended to be a starting point, which when finished requires human review - rather than generating a finished product. \n\n## Example Usage\n\nGenerating document with minimal Terraform configuration as example:\n\n```\n$ go run main.go -name azurerm_resource_group -brand-name \"Resource Group\" -type \"resource\" -resource-id \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1\" -website-path ../../../website/\n```\n\nGenerating document with Terraform configuration from AccTest:\n\n```\n$ go run main.go -name azurerm_resource_group -brand-name \"Resource Group\" -type \"resource\" -resource-id \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1\" -website-path ../../../website/ -example -root-dir ../../.. -service-pkg ./internal/services/resource -testcase TestAccResourceGroup_basic\n```\n\n## Arguments\n\n* `-name` - (Required) The Name used for the Resource in Terraform e.g. `azurerm_resource_group`\n\n* `-brand-name` - (Required) The Brand Name used for this Resource in Azure e.g. `Resource Group` or `App Service (Web Apps)`\n\n* `-type` - (Required) The Type of Documentation to generate. Possible values are `data` (for a Data Source) or `resource` (for a Resource).\n\n* `-resource-id` - (Required when scaffolding a Resource) An Azure Resource ID which can be used as a placeholder in the import documentation.\n\n* `-website-path` - (Required) The path to the `./website` directory in the root of this repository.\n\n* `-example` - (Optional) Whether to generate the Terraform configuration example from AccTest?\n\n* `-root-dir` - (Optional) The path to the project root. Required when `-example` is set.\n\n* `-service-dir` - (Optional) The relative path to the service package (e.g. `./internal/services/network`). Required when `-example` is set.\n\n* `-test-case` - (Optional) The name of the AccTest where the Terraform configuration derives from. Required when `-example` is set.\n","examples/vm-scale-set/linux/extensions/README.md":"## Example: Linux Virtual Machine Scale Set with VM Extensions\n\nThis example provisions a basic Linux Virtual Machine Scale Set using a password for authentication and a `CustomScript` extension.\n","examples/vm-scale-set/windows/extensions/README.md":"## Example: Windows Virtual Machine Scale Set with VM Extensions\n\nThis example provisions a basic Windows Virtual Machine Scale Set with two VM Extensions.\n","examples/vm-scale-set/extensions/custom-script/README.md":"## Example: Custom Script Extension\n\nThis example configures a Custom Script Extension on a Linux Virtual Machine Scale Set - however the example is essentially the same for a Windows Virtual Machine Scale Sets too.\n","internal/tools/update-api-version/README.md":"## Tool: `update-api-version`\n\nThis tool automatically updates import references from one API version to another API version when using `hashicorp/go-azure-sdk`.\n\nThis works against a Service and takes both the old and the new API versions, for example:\n\n```sh\n./update-api-version -service=\"advisor\" -old-api-version=\"2020-01-01\" -new-api-version=\"2022-01-01\"\n```\n\nThe arguments are:\n\n* `service` - the name of the Service Package (e.g. `compute`, `network` etc).\n* `old-api-version` - the existing API version (for example `2020-01-01` or `2020-01-01-preview`) which should be replaced.\n* `new-api-version` - the new API version which should be used in place of the value for `old-api-version`.\n\n---\n\nThis tool supports updating both explicit SDK references, that is:\n\n```\nimport (\n    \"github.com/hashicorp/go-azure-sdk/resource-manager/{service}/{api-version}/{sdk}\"\n)\n```\n\nas well as Meta Clients (which includes updating the import alias):\n\n```\nimport (\n    service_api_version \"github.com/hashicorp/go-azure-sdk/resource-manager/{service}/{api-version}\"\n)\n```\n","vendor/github.com/hashicorp/go-azure-sdk/resource-manager/azurestackhci/2024-01-01/extensions/README.md":"# extensions Documentation\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/azurestackhci/2024-01-01/extensions/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/azurestackhci/2024-01-01/extensions/README.md)","vendor/github.com/hashicorp/go-azure-sdk/resource-manager/cdn/2025-12-01/rules/README.md":"# Rules Skill\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/cdn/2025-12-01/rules/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/cdn/2025-12-01/rules/README.md)","vendor/github.com/hashicorp/go-azure-sdk/resource-manager/compute/2024-03-01/virtualmachineextensions/README.md":"# virtualmachineextensions Documentation\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/compute/2024-03-01/virtualmachineextensions/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/compute/2024-03-01/virtualmachineextensions/README.md)","vendor/github.com/hashicorp/go-azure-sdk/resource-manager/compute/2025-04-01/virtualmachinescalesetextensions/README.md":"# virtualmachinescalesetextensions Documentation\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/compute/2025-04-01/virtualmachinescalesetextensions/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/compute/2025-04-01/virtualmachinescalesetextensions/README.md)","vendor/github.com/hashicorp/go-azure-sdk/resource-manager/datadog/2021-03-01/rules/README.md":"# Rules Skill\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/datadog/2021-03-01/rules/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/datadog/2021-03-01/rules/README.md)","vendor/github.com/hashicorp/go-azure-sdk/resource-manager/elastic/2023-06-01/rules/README.md":"# Rules Skill\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/elastic/2023-06-01/rules/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/elastic/2023-06-01/rules/README.md)","vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hdinsight/2021-06-01/extensions/README.md":"# extensions Documentation\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hdinsight/2021-06-01/extensions/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hdinsight/2021-06-01/extensions/README.md)","vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2022-11-10/machineextensions/README.md":"# machineextensions Documentation\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2022-11-10/machineextensions/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2022-11-10/machineextensions/README.md)","vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2024-07-10/extensions/README.md":"# extensions Documentation\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2024-07-10/extensions/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2024-07-10/extensions/README.md)","vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2024-07-10/machineextensions/README.md":"# machineextensions Documentation\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2024-07-10/machineextensions/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2024-07-10/machineextensions/README.md)","vendor/github.com/hashicorp/go-azure-sdk/resource-manager/kubernetesconfiguration/2024-11-01/extensions/README.md":"# extensions Documentation\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/kubernetesconfiguration/2024-11-01/extensions/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/kubernetesconfiguration/2024-11-01/extensions/README.md)","vendor/github.com/hashicorp/go-azure-sdk/resource-manager/servicebus/2026-01-01/rules/README.md":"# Rules Skill\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/servicebus/2026-01-01/rules/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/servicebus/2026-01-01/rules/README.md)","vendor/github.com/hashicorp/go-azure-sdk/resource-manager/storagemover/2023-03-01/agents/README.md":"# Subagent: readme\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/storagemover/2023-03-01/agents/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/storagemover/2023-03-01/agents/README.md)"},"items":[{"name":"README.md","path":"vendor/github.com/hashicorp/go-azure-sdk/resource-manager/cdn/2025-12-01/rules/README.md","rawUrl":"https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/cdn/2025-12-01/rules/README.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/cdn/2025-12-01/rules/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/cdn/2025-12-01/rules/README.md)","tokens":300,"sizeBytes":307},{"name":"README.md","path":"vendor/github.com/hashicorp/go-azure-sdk/resource-manager/datadog/2021-03-01/rules/README.md","rawUrl":"https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/datadog/2021-03-01/rules/README.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/datadog/2021-03-01/rules/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/datadog/2021-03-01/rules/README.md)","tokens":300,"sizeBytes":315},{"name":"README.md","path":"vendor/github.com/hashicorp/go-azure-sdk/resource-manager/elastic/2023-06-01/rules/README.md","rawUrl":"https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/elastic/2023-06-01/rules/README.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/elastic/2023-06-01/rules/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/elastic/2023-06-01/rules/README.md)","tokens":300,"sizeBytes":315},{"name":"README.md","path":"vendor/github.com/hashicorp/go-azure-sdk/resource-manager/servicebus/2026-01-01/rules/README.md","rawUrl":"https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/servicebus/2026-01-01/rules/README.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/servicebus/2026-01-01/rules/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/servicebus/2026-01-01/rules/README.md)","tokens":300,"sizeBytes":321},{"name":"README.md","path":"examples/vm-scale-set/extensions/custom-script/README.md","rawUrl":"https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/examples/vm-scale-set/extensions/custom-script/README.md","title":"custom-script Documentation","category":"plugin-manifest","format":"markdown","content":"## Example: Custom Script Extension\n\nThis example configures a Custom Script Extension on a Linux Virtual Machine Scale Set - however the example is essentially the same for a Windows Virtual Machine Scale Sets too.\n","isInternal":false,"tokens":40,"sizeBytes":217},{"name":"README.md","path":"examples/vm-scale-set/linux/extensions/README.md","rawUrl":"https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/examples/vm-scale-set/linux/extensions/README.md","title":"extensions Documentation","category":"plugin-manifest","format":"markdown","content":"## Example: Linux Virtual Machine Scale Set with VM Extensions\n\nThis example provisions a basic Linux Virtual Machine Scale Set using a password for authentication and a `CustomScript` extension.\n","isInternal":false,"tokens":36,"sizeBytes":197},{"name":"README.md","path":"examples/vm-scale-set/windows/extensions/README.md","rawUrl":"https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/examples/vm-scale-set/windows/extensions/README.md","title":"extensions Documentation","category":"plugin-manifest","format":"markdown","content":"## Example: Windows Virtual Machine Scale Set with VM Extensions\n\nThis example provisions a basic Windows Virtual Machine Scale Set with two VM Extensions.\n","isInternal":false,"tokens":28,"sizeBytes":157},{"name":"README.md","path":"internal/tools/document-lint/README.md","rawUrl":"https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/internal/tools/document-lint/README.md","title":"document-lint Documentation","category":"plugin-manifest","format":"markdown","content":"# Introduction \r\nThis tool detects and fixes inconsistencies in the AzureRM Terraform Provider resource documentation.\r\n\r\n## The following can be checked/fixed:\r\n1. Formatting of documentation.\r\n2. The Required/Optional value of properties.\r\n3. The Default value of properties.\r\n4. The ForceNew value of properties.\r\n5. The TimeOut value of create/update/read/delete functions.\r\n6. Properties that are present in the schema but missing in the documentation and vice versa.\r\n7. The list of PossibleValues.\r\n\r\n# Getting Started\r\n```bash\r\n# print the usage\r\ngo run main.go -h\r\n\r\n# check documents and print the error information\r\ngo run main.go check\r\n\r\n# check and try to fix existing errors\r\ngo run main.go fix\r\n```","isInternal":false,"tokens":150,"sizeBytes":714},{"name":"README.md","path":"internal/tools/generator-resource-id/README.md","rawUrl":"https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/internal/tools/generator-resource-id/README.md","title":"generator-resource-id Documentation","category":"plugin-manifest","format":"markdown","content":"## Generator: Resource ID\n\n> **Note:** Resource ID Formatters, Parsers and Structs are now available in [`hashicorp/go-azure-sdk`](https://github.com/hashicorp/go-azure-sdk) and [`commonids` within `hashicorp/go-azure-helpers`](https://github.com/hashicorp/go-azure-helpers/tree/main/resourcemanager/commonids), where available those Resource ID's can be used directly - at this point this package is mostly for legacy resources which haven't yet been migrated to `hashicorp/go-azure-sdk`.\n\nEach Service Definition contains one or more Resource ID's - this tool allows the generation of:\n\n* Resource ID Formatters\n* Resource ID Parsers\n* Resource ID Structs\n\nThis is run via go:generate whenever the provider is compiled - at this time this doesn't wipe an existing \"parse\" folder so it's possible to mix and match if necessary.\n\n## Example Usage\n\n```\ngo run main.go -path=./ -name=MyResourceType -id=/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.AnalysisServices/servers/Server1\n```\n\n## Arguments\n\n* `help` - Show help?\n\n* `id` - An example of the Azure Resource ID for this Resource.\n\n* `name` - The name of this Resource Type, without the Service Name. For example `AnalysisServicesServer` becomes `Server`.\n\n* `path` - The Relative Path to the Service Package.\n\n* `rewrite` - should an `insensitive` parser also be generated to allow for these ID's being rewritten?\n","isInternal":false,"tokens":343,"sizeBytes":1421},{"name":"README.md","path":"internal/tools/generator-schema-snapshot/README.md","rawUrl":"https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/internal/tools/generator-schema-snapshot/README.md","title":"generator-schema-snapshot Documentation","category":"plugin-manifest","format":"markdown","content":"## Schema Snapshot Generator\n\nThis application generates the schema snapshot for a resource, mainly to be used for [resource state migration](https://developer.hashicorp.com/terraform/plugin/sdkv2/resources/state-migration).\n\n## Example Usage\n\n```\n$ go run main.go <resource_type>\n```\n\nE.g.\n\n```\n$ go run main.go azurerm_resource_group\n```\n\n## Arguments\n\n* `resource_type`: The resource type to generate the schema. \n","isInternal":false,"tokens":95,"sizeBytes":417},{"name":"README.md","path":"internal/tools/generator-services/README.md","rawUrl":"https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/internal/tools/generator-services/README.md","title":"generator-services Documentation","category":"plugin-manifest","format":"markdown","content":"## Generator: Services\n\nEach Service Definition contains metadata (such as the Display Name & Website Categories) required in other parts of the codebase, for easier grouping.\n\nThis generator takes that metadata and uses it to generate two things:\n\n1. Website Categories - which validates the categories used in the website exist, required for website deployments to happen.\n2. Service Definitions - generates the list of services used to run the Acceptance Tests\n3. GitHub Labels - generates the list of tags which should be assigned to a pull request when files within this path are changed. \n\nThis is run via go:generate whenever the \"SupportedServices\" array is changed so that this is kept up-to-date.\n\n## Example Usage\n\n```\ngo run main.go -path=../../path/to/root-directory\n```\n\n## Arguments\n\n* `help` - Show help?\n\n* `path` - The Relative Path to the root of the repository\n","isInternal":false,"tokens":185,"sizeBytes":881},{"name":"README.md","path":"internal/tools/generator-typed-model/README.md","rawUrl":"https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/internal/tools/generator-typed-model/README.md","title":"generator-typed-model Documentation","category":"plugin-manifest","format":"markdown","content":"## Typed Model Generator\n\nThis application generates the Go structures for a typed resource by providing its schema.\n\n## Example Usage\n\nGiven following schema of the `azurerm_resource_group` and ensure the `azurerm_resource_group` is registered as a resource to the provider:\n\n```go\nSchema: map[string]*pluginsdk.Schema{\n    \"name\": commonschema.ResourceGroupName(),\n\n    \"location\": commonschema.Location(),\n\n    \"tags\": commonschema.Tags(),\n},\n```\n\nTo generate its corresponding typed SDK model, run the following command:\n\n```go\n$ go run main.go azurerm_resource_group\n```\n\nThis generates:\n\n```go\npackage main\n\ntype ResourceGroupModel struct {\n        Location string            `tfschema:\"location\"`\n        Name     string            `tfschema:\"name\"`\n        Tags     map[string]string `tfschema:\"tags\"`\n}\n```\n","isInternal":false,"tokens":178,"sizeBytes":816},{"name":"README.md","path":"internal/tools/pr-guide-suggestions/README.md","rawUrl":"https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/internal/tools/pr-guide-suggestions/README.md","title":"pr-guide-suggestions Documentation","category":"plugin-manifest","format":"markdown","content":"# pr-guide-suggestions — AST-based schema linter\n\nA fast, AST-based linter for the AzureRM provider's **resource** and **data\nsource** schemas. It implements the pr-guide-suggestions rules (`SL001`–`SL013`) as\nsmall checks over a syntactic schema tree built with the standard `go/ast`.\n\nIt is a normal package of the provider module (at `internal/tools/pr-guide-suggestions`)\nwith **no external dependencies** — only the Go standard library — so it adds\nnothing to the provider's `go.mod` or vendor tree and needs no build of the\nprovider itself.\n\n## Usage\n\nRun it from the repository root:\n\n```bash\n# list the available rules\ngo run ./internal/tools/pr-guide-suggestions list\n\n# lint a single file\ngo run ./internal/tools/pr-guide-suggestions check internal/services/foo/foo_resource.go\n\n# lint a directory tree\ngo run ./internal/tools/pr-guide-suggestions check internal/services/foo\n\n# apply auto-fixable fixes (property renames) in place\ngo run ./internal/tools/pr-guide-suggestions check -fix internal/services/foo\n\n# run or disable specific rules\ngo run ./internal/tools/pr-guide-suggestions check -rules SL002,SL007 internal/services/foo\ngo run ./internal/tools/pr-guide-suggestions check -disable SL001 internal/services/foo\n\n# machine-readable output\ngo run ./internal/tools/pr-guide-suggestions check -format json internal/services/foo\n\n# lint only the schema properties added since a base branch (see Diff mode)\ngo run ./internal/tools/pr-guide-suggestions check -diff-base origin/main\n```\n\nOr build a binary once and reuse it:\n\n```bash\ngo build -o /tmp/pr-guide-suggestions ./internal/tools/pr-guide-suggestions\n/tmp/pr-guide-suggestions check internal/services/foo/foo_resource.go\n```\n\n### Flags (`check`)\n\n| Flag | Default | Description |\n|------|---------|-------------|\n| `-C` | `.` | repository root; targets and `git` run relative to it |\n| `-format` | `text` | output format: `text` or `json` |\n| `-fix` | `false` | apply auto-fixable fixes (property renames) to files in place (see [Applying fixes](#applying-fixes)) |\n| `-diff-base` | | only report findings on lines added since this git ref (see [Diff mode](#diff-mode)) |\n| `-rules` | | comma-separated rule IDs to run (default: all) |\n| `-disable` | | comma-separated rule IDs to disable (takes precedence) |\n| `-fail-on-error` | `true` | exit non-zero when any `error`-severity finding is present |\n\n## Rules\n\n| ID | Name | Severity | Checks |\n|----|------|----------|--------|\n| SL001 | property-description-required | warning | every property sets a non-empty `Description` |\n| SL002 | single-property-block | warning | a `MaxItems: 1` block with a single nested property should be flattened |\n| SL003 | limits-on-non-collection | error | `MinItems`/`MaxItems` are only set on `TypeList`/`TypeSet` |\n| SL004 | avoid-none-value | warning | a user-settable enum should not accept `None`/`Off`/`Default`/`Disabled`; detects `StringInSlice` literals, `string(pkg.…None)` enum constants, and validators nested in `validation.Any`/`All` |\n| SL005 | validation-required | warning | user-settable string/numeric arguments set validation |\n| SL006 | block-needs-constraint | warning | a block with no required fields sets `AtLeastOneOf`/`ExactlyOneOf` |\n| SL007 | array-limits | warning | a scalar array declares `MaxItems` |\n| SL008 | sku-field-naming | warning | group multiple `sku_*` fields into a single `sku` block |\n| SL009 | unit-in-naming | warning | unit-of-measure suffixes use the `_in_<unit>` form (e.g. `size_in_mb`) |\n| SL010 | no-abbreviations | warning | property names use full words, not abbreviations |\n| SL011 | redundant-is-prefix | warning | boolean names do not start with a redundant `is_` |\n| SL012 | redundant-suffix | warning | names drop a redundant grouping-word suffix (`_properties`/`_config`/`_profile`) |\n| SL013 | id-reference-validation | warning | `*_id` references use a resource-specific ID validator or `IsUUID`, not just `StringIsNotEmpty` |\n\nOnly `SL003` is `error` severity; the rest are `warning`. With\n`-fail-on-error` (the default), the process exits non-zero only when an `error`\nfinding is present.\n\n### Coverage note\n\nBecause the linter reads source rather than the compiled schema, properties\ndefined by opaque helper calls (for example `commonschema.Location()` or\n`commonschema.ResourceIDReferenceOptional(...)`) have no visible schema body.\nRules that need the schema (type, validation, limits) skip these; name-only\nrules (SL009, SL010, SL012) still apply. This is by design: newly added\nproperties in a pull request are written as inline `*pluginsdk.Schema` literals,\nwhich are fully analysed.\n\nTwo consequences follow for whole-resource runs (they do not affect diff mode,\nwhich only lints newly added inline properties):\n\n- **External composition is invisible.** Enum values sourced from an external\n  SDK function (`validation.StringInSlice(pkg.PossibleValuesForX(), ...)`) and\n  schemas produced by `commonschema.*` helpers live in other modules, so their\n  properties cannot be inspected. The compiled-schema linter can, because it\n  evaluates that code at runtime.\n- **Local schema helpers are resolved.** When a property value or a block's\n  `Elem` schema is a call to a package-level `schemaXxx()` helper that returns a\n  literal (directly, via `s := ...; return s`, or via an inline `func() {...}()`),\n  the linter follows it, so block-level rules run and children are reported with\n  full dotted paths. Helpers that build their map imperatively (appending to it\n  rather than returning a literal), or that live in another package, are not\n  followed; their leaf properties are then linted as their own root instead.\n\n## Diff mode\n\nIn a pull request, existing properties usually cannot be changed to satisfy a\nrule — renaming a released property is a breaking change. Diff mode reports only\nfindings on the lines a change set **adds**.\n\nPass `-diff-base <ref>`. The tool computes the merge base of `<ref>` and `HEAD`,\ndiffs the working tree against it (restricted to resource and data source\nfiles), and reports a finding only when the property's map key is on an added\nline. A brand new resource is linted in full; a new child added to a pre-existing\nblock is linted while its siblings are not.\n\n```bash\nGITHUB_BASE_REF=main bash ./scripts/checks/pr-guide-suggestions.sh\n```\n\n## Applying fixes\n\nBy default the linter is read-only: it reports findings (with a suggested\nremediation for each fixable one) but does not touch your files. Pass `-fix` to\n*apply* the auto-fixable findings in place. Today the naming rules\n(`SL009`–`SL012`) are auto-applicable: each is a **rename**, and applying it\nreplaces every quoted occurrence of the property name across the file — not just\nthe schema map key, but also its `d.Get`/`d.Set` calls, `tfschema` struct tags\nand `AtLeastOneOf`/`ExactlyOneOf`/`ConflictsWith` cross-references:\n\n```bash\n# rename \"vm_count\" -> \"virtual_machine_count\" everywhere in the file\ngo run ./internal/tools/pr-guide-suggestions check -rules SL010 -fix internal/services/foo/foo_resource.go\n```\n\n```text\nfixed internal/services/foo/foo_resource.go: renamed \"vm_count\" → \"virtual_machine_count\"\n\napplied 1 fix(es)\n```\n\nDetails and caveats:\n\n- Replacement matches the name as a whole **path segment** inside string\n  literals — bounded by a double quote or a dot — so both the standalone key\n  (`\"vm_count\"`) and dotted cross-field references (`\"vm_count.0.child\"` in\n  `AtLeastOneOf`/`ConflictsWith`/`d.Get`) are updated, while superstrings like\n  `\"vm_count_total\"`, bare words in comments and the Go field identifier\n  (`VmCount`) are left untouched. Rename the Go field yourself if you want it to\n  match.\n- Every matching occurrence in the file is replaced. If two blocks happen to\n  share a child name, both are renamed; review the diff.\n- Non-rename fixable findings (`SL002` flatten, `SL003` remove limits) are\n  structural and are **not** auto-applied — `-fix` reports them as remaining\n  work.\n- `-fix` writes files in place; run it on a clean working tree so you can review\n  the change with `git diff`. Re-run the linter afterwards to converge on any\n  follow-on findings and to reformat with `gofmt`/`goimports` if needed.\n\n## Adding a rule\n\n1. Add a `slNNN.go` file in `rules/` defining a `*Rule` with a `Check` function\n   that iterates the property nodes:\n\n   ```go\n   var slNNN = &Rule{\n       ID: \"SLNNN\", Name: \"my-rule\", Severity: Warning,\n       Check: checkSLNNN,\n   }\n\n   func checkSLNNN(res *schematree.Result, report ReportFunc) {\n       for _, n := range res.All {\n           // inspect n.Name / n.Path / n.Schema and call report(n, msg, fix)\n       }\n   }\n   ```\n\n2. Register it by appending to `Registry` in [rules/rules.go](rules/rules.go).\n3. Add a table-driven test alongside it (see the existing `rules/slNNN_test.go`).\n\nTo make a rule fixable, set `Fixable: true` and pass a `*Fix` as the last\nargument to `report` (pass `nil` when there is no fix). A `Fix` with only a\n`Suggestion` is printed as the remediation hint; a `Fix` that also sets `Rename`\nto the new property name is auto-applied by `-fix`:\n\n```go\nreport(n, msg, &Fix{\n    Suggestion: fmt.Sprintf(\"rename %q to %q\", n.Name, preferred),\n    Rename:     preferred,\n})\n```\n","isInternal":false,"tokens":2307,"sizeBytes":9236},{"name":"README.md","path":"internal/tools/preview-api-version-linter/README.md","rawUrl":"https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/internal/tools/preview-api-version-linter/README.md","title":"preview-api-version-linter Documentation","category":"plugin-manifest","format":"markdown","content":"## Tool: `preview-api-version-linter`\n\nCheck and fail if preview ARM API version is imported in the vendor folder. Exceptions can be made for specific\ncircumstances. More info: https://github.com/hashicorp/terraform-provider-azurerm/blob/main/contributing/topics/guide-api-version.md.","isInternal":false,"tokens":65,"sizeBytes":284},{"name":"README.md","path":"internal/tools/update-api-version/README.md","rawUrl":"https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/internal/tools/update-api-version/README.md","title":"update-api-version Documentation","category":"plugin-manifest","format":"markdown","content":"## Tool: `update-api-version`\n\nThis tool automatically updates import references from one API version to another API version when using `hashicorp/go-azure-sdk`.\n\nThis works against a Service and takes both the old and the new API versions, for example:\n\n```sh\n./update-api-version -service=\"advisor\" -old-api-version=\"2020-01-01\" -new-api-version=\"2022-01-01\"\n```\n\nThe arguments are:\n\n* `service` - the name of the Service Package (e.g. `compute`, `network` etc).\n* `old-api-version` - the existing API version (for example `2020-01-01` or `2020-01-01-preview`) which should be replaced.\n* `new-api-version` - the new API version which should be used in place of the value for `old-api-version`.\n\n---\n\nThis tool supports updating both explicit SDK references, that is:\n\n```\nimport (\n    \"github.com/hashicorp/go-azure-sdk/resource-manager/{service}/{api-version}/{sdk}\"\n)\n```\n\nas well as Meta Clients (which includes updating the import alias):\n\n```\nimport (\n    service_api_version \"github.com/hashicorp/go-azure-sdk/resource-manager/{service}/{api-version}\"\n)\n```\n","isInternal":false,"tokens":263,"sizeBytes":1067},{"name":"README.md","path":"internal/tools/website-scaffold/README.md","rawUrl":"https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/internal/tools/website-scaffold/README.md","title":"website-scaffold Documentation","category":"plugin-manifest","format":"markdown","content":"## Website Scaffolder\n\nThis application scaffolds the documentation for a Data Source/Resource.\n\n**Note:** the documentation generated from this application is intended to be a starting point, which when finished requires human review - rather than generating a finished product. \n\n## Example Usage\n\nGenerating document with minimal Terraform configuration as example:\n\n```\n$ go run main.go -name azurerm_resource_group -brand-name \"Resource Group\" -type \"resource\" -resource-id \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1\" -website-path ../../../website/\n```\n\nGenerating document with Terraform configuration from AccTest:\n\n```\n$ go run main.go -name azurerm_resource_group -brand-name \"Resource Group\" -type \"resource\" -resource-id \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1\" -website-path ../../../website/ -example -root-dir ../../.. -service-pkg ./internal/services/resource -testcase TestAccResourceGroup_basic\n```\n\n## Arguments\n\n* `-name` - (Required) The Name used for the Resource in Terraform e.g. `azurerm_resource_group`\n\n* `-brand-name` - (Required) The Brand Name used for this Resource in Azure e.g. `Resource Group` or `App Service (Web Apps)`\n\n* `-type` - (Required) The Type of Documentation to generate. Possible values are `data` (for a Data Source) or `resource` (for a Resource).\n\n* `-resource-id` - (Required when scaffolding a Resource) An Azure Resource ID which can be used as a placeholder in the import documentation.\n\n* `-website-path` - (Required) The path to the `./website` directory in the root of this repository.\n\n* `-example` - (Optional) Whether to generate the Terraform configuration example from AccTest?\n\n* `-root-dir` - (Optional) The path to the project root. Required when `-example` is set.\n\n* `-service-dir` - (Optional) The relative path to the service package (e.g. `./internal/services/network`). Required when `-example` is set.\n\n* `-test-case` - (Optional) The name of the AccTest where the Terraform configuration derives from. Required when `-example` is set.\n","isInternal":false,"tokens":487,"sizeBytes":2076},{"name":"README.md","path":"vendor/github.com/hashicorp/go-azure-sdk/resource-manager/azurestackhci/2024-01-01/extensions/README.md","rawUrl":"https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/azurestackhci/2024-01-01/extensions/README.md","title":"extensions Documentation","category":"plugin-manifest","format":"markdown","content":"# extensions Documentation\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/azurestackhci/2024-01-01/extensions/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/azurestackhci/2024-01-01/extensions/README.md)","tokens":300,"sizeBytes":350},{"name":"README.md","path":"vendor/github.com/hashicorp/go-azure-sdk/resource-manager/compute/2024-03-01/virtualmachineextensions/README.md","rawUrl":"https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/compute/2024-03-01/virtualmachineextensions/README.md","title":"virtualmachineextensions Documentation","category":"plugin-manifest","format":"markdown","content":"# virtualmachineextensions Documentation\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/compute/2024-03-01/virtualmachineextensions/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/compute/2024-03-01/virtualmachineextensions/README.md)","tokens":300,"sizeBytes":380},{"name":"README.md","path":"vendor/github.com/hashicorp/go-azure-sdk/resource-manager/compute/2025-04-01/virtualmachinescalesetextensions/README.md","rawUrl":"https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/compute/2025-04-01/virtualmachinescalesetextensions/README.md","title":"virtualmachinescalesetextensions Documentation","category":"plugin-manifest","format":"markdown","content":"# virtualmachinescalesetextensions Documentation\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/compute/2025-04-01/virtualmachinescalesetextensions/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/compute/2025-04-01/virtualmachinescalesetextensions/README.md)","tokens":300,"sizeBytes":404},{"name":"README.md","path":"vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hdinsight/2021-06-01/extensions/README.md","rawUrl":"https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hdinsight/2021-06-01/extensions/README.md","title":"extensions Documentation","category":"plugin-manifest","format":"markdown","content":"# extensions Documentation\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hdinsight/2021-06-01/extensions/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hdinsight/2021-06-01/extensions/README.md)","tokens":300,"sizeBytes":342},{"name":"README.md","path":"vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2022-11-10/machineextensions/README.md","rawUrl":"https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2022-11-10/machineextensions/README.md","title":"machineextensions Documentation","category":"plugin-manifest","format":"markdown","content":"# machineextensions Documentation\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2022-11-10/machineextensions/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2022-11-10/machineextensions/README.md)","tokens":300,"sizeBytes":371},{"name":"README.md","path":"vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2024-07-10/extensions/README.md","rawUrl":"https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2024-07-10/extensions/README.md","title":"extensions Documentation","category":"plugin-manifest","format":"markdown","content":"# extensions Documentation\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2024-07-10/extensions/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2024-07-10/extensions/README.md)","tokens":300,"sizeBytes":350},{"name":"README.md","path":"vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2024-07-10/machineextensions/README.md","rawUrl":"https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2024-07-10/machineextensions/README.md","title":"machineextensions Documentation","category":"plugin-manifest","format":"markdown","content":"# machineextensions Documentation\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2024-07-10/machineextensions/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2024-07-10/machineextensions/README.md)","tokens":300,"sizeBytes":371},{"name":"README.md","path":"vendor/github.com/hashicorp/go-azure-sdk/resource-manager/kubernetesconfiguration/2024-11-01/extensions/README.md","rawUrl":"https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/kubernetesconfiguration/2024-11-01/extensions/README.md","title":"extensions Documentation","category":"plugin-manifest","format":"markdown","content":"# extensions Documentation\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/kubernetesconfiguration/2024-11-01/extensions/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/kubernetesconfiguration/2024-11-01/extensions/README.md)","tokens":300,"sizeBytes":370},{"name":"README.md","path":"vendor/github.com/hashicorp/go-azure-sdk/resource-manager/storagemover/2023-03-01/agents/README.md","rawUrl":"https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/storagemover/2023-03-01/agents/README.md","title":"Subagent: readme","category":"subagent-persona","format":"markdown","content":"# Subagent: readme\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/storagemover/2023-03-01/agents/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/storagemover/2023-03-01/agents/README.md)","tokens":300,"sizeBytes":332}],"systemPromptSnippet":"<yakaai_skills repo=\"hashicorp/terraform-provider-azurerm\">\n<!-- File: vendor/github.com/hashicorp/go-azure-sdk/resource-manager/cdn/2025-12-01/rules/README.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Rules Skill\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/cdn/2025-12-01/rules/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/cdn/2025-12-01/rules/README.md)\n\n<!-- File: vendor/github.com/hashicorp/go-azure-sdk/resource-manager/datadog/2021-03-01/rules/README.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Rules Skill\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/datadog/2021-03-01/rules/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/datadog/2021-03-01/rules/README.md)\n\n<!-- File: vendor/github.com/hashicorp/go-azure-sdk/resource-manager/elastic/2023-06-01/rules/README.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Rules Skill\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/elastic/2023-06-01/rules/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/elastic/2023-06-01/rules/README.md)\n\n<!-- File: vendor/github.com/hashicorp/go-azure-sdk/resource-manager/servicebus/2026-01-01/rules/README.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Rules Skill\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/servicebus/2026-01-01/rules/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/servicebus/2026-01-01/rules/README.md)\n\n<!-- File: examples/vm-scale-set/extensions/custom-script/README.md (Tokens: ~40 | Category: plugin-manifest) -->\n## Example: Custom Script Extension\n\nThis example configures a Custom Script Extension on a Linux Virtual Machine Scale Set - however the example is essentially the same for a Windows Virtual Machine Scale Sets too.\n\n<!-- File: examples/vm-scale-set/linux/extensions/README.md (Tokens: ~36 | Category: plugin-manifest) -->\n## Example: Linux Virtual Machine Scale Set with VM Extensions\n\nThis example provisions a basic Linux Virtual Machine Scale Set using a password for authentication and a `CustomScript` extension.\n\n<!-- File: examples/vm-scale-set/windows/extensions/README.md (Tokens: ~28 | Category: plugin-manifest) -->\n## Example: Windows Virtual Machine Scale Set with VM Extensions\n\nThis example provisions a basic Windows Virtual Machine Scale Set with two VM Extensions.\n\n<!-- File: internal/tools/document-lint/README.md (Tokens: ~150 | Category: plugin-manifest) -->\n# Introduction \r\nThis tool detects and fixes inconsistencies in the AzureRM Terraform Provider resource documentation.\r\n\r\n## The following can be checked/fixed:\r\n1. Formatting of documentation.\r\n2. The Required/Optional value of properties.\r\n3. The Default value of properties.\r\n4. The ForceNew value of properties.\r\n5. The TimeOut value of create/update/read/delete functions.\r\n6. Properties that are present in the schema but missing in the documentation and vice versa.\r\n7. The list of PossibleValues.\r\n\r\n# Getting Started\r\n```bash\r\n# print the usage\r\ngo run main.go -h\r\n\r\n# check documents and print the error information\r\ngo run main.go check\r\n\r\n# check and try to fix existing errors\r\ngo run main.go fix\r\n```\n\n<!-- File: internal/tools/generator-resource-id/README.md (Tokens: ~343 | Category: plugin-manifest) -->\n## Generator: Resource ID\n\n> **Note:** Resource ID Formatters, Parsers and Structs are now available in [`hashicorp/go-azure-sdk`](https://github.com/hashicorp/go-azure-sdk) and [`commonids` within `hashicorp/go-azure-helpers`](https://github.com/hashicorp/go-azure-helpers/tree/main/resourcemanager/commonids), where available those Resource ID's can be used directly - at this point this package is mostly for legacy resources which haven't yet been migrated to `hashicorp/go-azure-sdk`.\n\nEach Service Definition contains one or more Resource ID's - this tool allows the generation of:\n\n* Resource ID Formatters\n* Resource ID Parsers\n* Resource ID Structs\n\nThis is run via go:generate whenever the provider is compiled - at this time this doesn't wipe an existing \"parse\" folder so it's possible to mix and match if necessary.\n\n## Example Usage\n\n```\ngo run main.go -path=./ -name=MyResourceType -id=/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.AnalysisServices/servers/Server1\n```\n\n## Arguments\n\n* `help` - Show help?\n\n* `id` - An example of the Azure Resource ID for this Resource.\n\n* `name` - The name of this Resource Type, without the Service Name. For example `AnalysisServicesServer` becomes `Server`.\n\n* `path` - The Relative Path to the Service Package.\n\n* `rewrite` - should an `insensitive` parser also be generated to allow for these ID's being rewritten?\n\n<!-- File: internal/tools/generator-schema-snapshot/README.md (Tokens: ~95 | Category: plugin-manifest) -->\n## Schema Snapshot Generator\n\nThis application generates the schema snapshot for a resource, mainly to be used for [resource state migration](https://developer.hashicorp.com/terraform/plugin/sdkv2/resources/state-migration).\n\n## Example Usage\n\n```\n$ go run main.go <resource_type>\n```\n\nE.g.\n\n```\n$ go run main.go azurerm_resource_group\n```\n\n## Arguments\n\n* `resource_type`: The resource type to generate the schema.\n\n<!-- File: internal/tools/generator-services/README.md (Tokens: ~185 | Category: plugin-manifest) -->\n## Generator: Services\n\nEach Service Definition contains metadata (such as the Display Name & Website Categories) required in other parts of the codebase, for easier grouping.\n\nThis generator takes that metadata and uses it to generate two things:\n\n1. Website Categories - which validates the categories used in the website exist, required for website deployments to happen.\n2. Service Definitions - generates the list of services used to run the Acceptance Tests\n3. GitHub Labels - generates the list of tags which should be assigned to a pull request when files within this path are changed. \n\nThis is run via go:generate whenever the \"SupportedServices\" array is changed so that this is kept up-to-date.\n\n## Example Usage\n\n```\ngo run main.go -path=../../path/to/root-directory\n```\n\n## Arguments\n\n* `help` - Show help?\n\n* `path` - The Relative Path to the root of the repository\n\n<!-- File: internal/tools/generator-typed-model/README.md (Tokens: ~178 | Category: plugin-manifest) -->\n## Typed Model Generator\n\nThis application generates the Go structures for a typed resource by providing its schema.\n\n## Example Usage\n\nGiven following schema of the `azurerm_resource_group` and ensure the `azurerm_resource_group` is registered as a resource to the provider:\n\n```go\nSchema: map[string]*pluginsdk.Schema{\n    \"name\": commonschema.ResourceGroupName(),\n\n    \"location\": commonschema.Location(),\n\n    \"tags\": commonschema.Tags(),\n},\n```\n\nTo generate its corresponding typed SDK model, run the following command:\n\n```go\n$ go run main.go azurerm_resource_group\n```\n\nThis generates:\n\n```go\npackage main\n\ntype ResourceGroupModel struct {\n        Location string            `tfschema:\"location\"`\n        Name     string            `tfschema:\"name\"`\n        Tags     map[string]string `tfschema:\"tags\"`\n}\n```\n\n<!-- File: internal/tools/pr-guide-suggestions/README.md (Tokens: ~2307 | Category: plugin-manifest) -->\n# pr-guide-suggestions — AST-based schema linter\n\nA fast, AST-based linter for the AzureRM provider's **resource** and **data\nsource** schemas. It implements the pr-guide-suggestions rules (`SL001`–`SL013`) as\nsmall checks over a syntactic schema tree built with the standard `go/ast`.\n\nIt is a normal package of the provider module (at `internal/tools/pr-guide-suggestions`)\nwith **no external dependencies** — only the Go standard library — so it adds\nnothing to the provider's `go.mod` or vendor tree and needs no build of the\nprovider itself.\n\n## Usage\n\nRun it from the repository root:\n\n```bash\n# list the available rules\ngo run ./internal/tools/pr-guide-suggestions list\n\n# lint a single file\ngo run ./internal/tools/pr-guide-suggestions check internal/services/foo/foo_resource.go\n\n# lint a directory tree\ngo run ./internal/tools/pr-guide-suggestions check internal/services/foo\n\n# apply auto-fixable fixes (property renames) in place\ngo run ./internal/tools/pr-guide-suggestions check -fix internal/services/foo\n\n# run or disable specific rules\ngo run ./internal/tools/pr-guide-suggestions check -rules SL002,SL007 internal/services/foo\ngo run ./internal/tools/pr-guide-suggestions check -disable SL001 internal/services/foo\n\n# machine-readable output\ngo run ./internal/tools/pr-guide-suggestions check -format json internal/services/foo\n\n# lint only the schema properties added since a base branch (see Diff mode)\ngo run ./internal/tools/pr-guide-suggestions check -diff-base origin/main\n```\n\nOr build a binary once and reuse it:\n\n```bash\ngo build -o /tmp/pr-guide-suggestions ./internal/tools/pr-guide-suggestions\n/tmp/pr-guide-suggestions check internal/services/foo/foo_resource.go\n```\n\n### Flags (`check`)\n\n| Flag | Default | Description |\n|------|---------|-------------|\n| `-C` | `.` | repository root; targets and `git` run relative to it |\n| `-format` | `text` | output format: `text` or `json` |\n| `-fix` | `false` | apply auto-fixable fixes (property renames) to files in place (see [Applying fixes](#applying-fixes)) |\n| `-diff-base` | | only report findings on lines added since this git ref (see [Diff mode](#diff-mode)) |\n| `-rules` | | comma-separated rule IDs to run (default: all) |\n| `-disable` | | comma-separated rule IDs to disable (takes precedence) |\n| `-fail-on-error` | `true` | exit non-zero when any `error`-severity finding is present |\n\n## Rules\n\n| ID | Name | Severity | Checks |\n|----|------|----------|--------|\n| SL001 | property-description-required | warning | every property sets a non-empty `Description` |\n| SL002 | single-property-block | warning | a `MaxItems: 1` block with a single nested property should be flattened |\n| SL003 | limits-on-non-collection | error | `MinItems`/`MaxItems` are only set on `TypeList`/`TypeSet` |\n| SL004 | avoid-none-value | warning | a user-settable enum should not accept `None`/`Off`/`Default`/`Disabled`; detects `StringInSlice` literals, `string(pkg.…None)` enum constants, and validators nested in `validation.Any`/`All` |\n| SL005 | validation-required | warning | user-settable string/numeric arguments set validation |\n| SL006 | block-needs-constraint | warning | a block with no required fields sets `AtLeastOneOf`/`ExactlyOneOf` |\n| SL007 | array-limits | warning | a scalar array declares `MaxItems` |\n| SL008 | sku-field-naming | warning | group multiple `sku_*` fields into a single `sku` block |\n| SL009 | unit-in-naming | warning | unit-of-measure suffixes use the `_in_<unit>` form (e.g. `size_in_mb`) |\n| SL010 | no-abbreviations | warning | property names use full words, not abbreviations |\n| SL011 | redundant-is-prefix | warning | boolean names do not start with a redundant `is_` |\n| SL012 | redundant-suffix | warning | names drop a redundant grouping-word suffix (`_properties`/`_config`/`_profile`) |\n| SL013 | id-reference-validation | warning | `*_id` references use a resource-specific ID validator or `IsUUID`, not just `StringIsNotEmpty` |\n\nOnly `SL003` is `error` severity; the rest are `warning`. With\n`-fail-on-error` (the default), the process exits non-zero only when an `error`\nfinding is present.\n\n### Coverage note\n\nBecause the linter reads source rather than the compiled schema, properties\ndefined by opaque helper calls (for example `commonschema.Location()` or\n`commonschema.ResourceIDReferenceOptional(...)`) have no visible schema body.\nRules that need the schema (type, validation, limits) skip these; name-only\nrules (SL009, SL010, SL012) still apply. This is by design: newly added\nproperties in a pull request are written as inline `*pluginsdk.Schema` literals,\nwhich are fully analysed.\n\nTwo consequences follow for whole-resource runs (they do not affect diff mode,\nwhich only lints newly added inline properties):\n\n- **External composition is invisible.** Enum values sourced from an external\n  SDK function (`validation.StringInSlice(pkg.PossibleValuesForX(), ...)`) and\n  schemas produced by `commonschema.*` helpers live in other modules, so their\n  properties cannot be inspected. The compiled-schema linter can, because it\n  evaluates that code at runtime.\n- **Local schema helpers are resolved.** When a property value or a block's\n  `Elem` schema is a call to a package-level `schemaXxx()` helper that returns a\n  literal (directly, via `s := ...; return s`, or via an inline `func() {...}()`),\n  the linter follows it, so block-level rules run and children are reported with\n  full dotted paths. Helpers that build their map imperatively (appending to it\n  rather than returning a literal), or that live in another package, are not\n  followed; their leaf properties are then linted as their own root instead.\n\n## Diff mode\n\nIn a pull request, existing properties usually cannot be changed to satisfy a\nrule — renaming a released property is a breaking change. Diff mode reports only\nfindings on the lines a change set **adds**.\n\nPass `-diff-base <ref>`. The tool computes the merge base of `<ref>` and `HEAD`,\ndiffs the working tree against it (restricted to resource and data source\nfiles), and reports a finding only when the property's map key is on an added\nline. A brand new resource is linted in full; a new child added to a pre-existing\nblock is linted while its siblings are not.\n\n```bash\nGITHUB_BASE_REF=main bash ./scripts/checks/pr-guide-suggestions.sh\n```\n\n## Applying fixes\n\nBy default the linter is read-only: it reports findings (with a suggested\nremediation for each fixable one) but does not touch your files. Pass `-fix` to\n*apply* the auto-fixable findings in place. Today the naming rules\n(`SL009`–`SL012`) are auto-applicable: each is a **rename**, and applying it\nreplaces every quoted occurrence of the property name across the file — not just\nthe schema map key, but also its `d.Get`/`d.Set` calls, `tfschema` struct tags\nand `AtLeastOneOf`/`ExactlyOneOf`/`ConflictsWith` cross-references:\n\n```bash\n# rename \"vm_count\" -> \"virtual_machine_count\" everywhere in the file\ngo run ./internal/tools/pr-guide-suggestions check -rules SL010 -fix internal/services/foo/foo_resource.go\n```\n\n```text\nfixed internal/services/foo/foo_resource.go: renamed \"vm_count\" → \"virtual_machine_count\"\n\napplied 1 fix(es)\n```\n\nDetails and caveats:\n\n- Replacement matches the name as a whole **path segment** inside string\n  literals — bounded by a double quote or a dot — so both the standalone key\n  (`\"vm_count\"`) and dotted cross-field references (`\"vm_count.0.child\"` in\n  `AtLeastOneOf`/`ConflictsWith`/`d.Get`) are updated, while superstrings like\n  `\"vm_count_total\"`, bare words in comments and the Go field identifier\n  (`VmCount`) are left untouched. Rename the Go field yourself if you want it to\n  match.\n- Every matching occurrence in the file is replaced. If two blocks happen to\n  share a child name, both are renamed; review the diff.\n- Non-rename fixable findings (`SL002` flatten, `SL003` remove limits) are\n  structural and are **not** auto-applied — `-fix` reports them as remaining\n  work.\n- `-fix` writes files in place; run it on a clean working tree so you can review\n  the change with `git diff`. Re-run the linter afterwards to converge on any\n  follow-on findings and to reformat with `gofmt`/`goimports` if needed.\n\n## Adding a rule\n\n1. Add a `slNNN.go` file in `rules/` defining a `*Rule` with a `Check` function\n   that iterates the property nodes:\n\n   ```go\n   var slNNN = &Rule{\n       ID: \"SLNNN\", Name: \"my-rule\", Severity: Warning,\n       Check: checkSLNNN,\n   }\n\n   func checkSLNNN(res *schematree.Result, report ReportFunc) {\n       for _, n := range res.All {\n           // inspect n.Name / n.Path / n.Schema and call report(n, msg, fix)\n       }\n   }\n   ```\n\n2. Register it by appending to `Registry` in [rules/rules.go](rules/rules.go).\n3. Add a table-driven test alongside it (see the existing `rules/slNNN_test.go`).\n\nTo make a rule fixable, set `Fixable: true` and pass a `*Fix` as the last\nargument to `report` (pass `nil` when there is no fix). A `Fix` with only a\n`Suggestion` is printed as the remediation hint; a `Fix` that also sets `Rename`\nto the new property name is auto-applied by `-fix`:\n\n```go\nreport(n, msg, &Fix{\n    Suggestion: fmt.Sprintf(\"rename %q to %q\", n.Name, preferred),\n    Rename:     preferred,\n})\n```\n\n<!-- File: internal/tools/preview-api-version-linter/README.md (Tokens: ~65 | Category: plugin-manifest) -->\n## Tool: `preview-api-version-linter`\n\nCheck and fail if preview ARM API version is imported in the vendor folder. Exceptions can be made for specific\ncircumstances. More info: https://github.com/hashicorp/terraform-provider-azurerm/blob/main/contributing/topics/guide-api-version.md.\n\n<!-- File: internal/tools/update-api-version/README.md (Tokens: ~263 | Category: plugin-manifest) -->\n## Tool: `update-api-version`\n\nThis tool automatically updates import references from one API version to another API version when using `hashicorp/go-azure-sdk`.\n\nThis works against a Service and takes both the old and the new API versions, for example:\n\n```sh\n./update-api-version -service=\"advisor\" -old-api-version=\"2020-01-01\" -new-api-version=\"2022-01-01\"\n```\n\nThe arguments are:\n\n* `service` - the name of the Service Package (e.g. `compute`, `network` etc).\n* `old-api-version` - the existing API version (for example `2020-01-01` or `2020-01-01-preview`) which should be replaced.\n* `new-api-version` - the new API version which should be used in place of the value for `old-api-version`.\n\n---\n\nThis tool supports updating both explicit SDK references, that is:\n\n```\nimport (\n    \"github.com/hashicorp/go-azure-sdk/resource-manager/{service}/{api-version}/{sdk}\"\n)\n```\n\nas well as Meta Clients (which includes updating the import alias):\n\n```\nimport (\n    service_api_version \"github.com/hashicorp/go-azure-sdk/resource-manager/{service}/{api-version}\"\n)\n```\n\n<!-- File: internal/tools/website-scaffold/README.md (Tokens: ~487 | Category: plugin-manifest) -->\n## Website Scaffolder\n\nThis application scaffolds the documentation for a Data Source/Resource.\n\n**Note:** the documentation generated from this application is intended to be a starting point, which when finished requires human review - rather than generating a finished product. \n\n## Example Usage\n\nGenerating document with minimal Terraform configuration as example:\n\n```\n$ go run main.go -name azurerm_resource_group -brand-name \"Resource Group\" -type \"resource\" -resource-id \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1\" -website-path ../../../website/\n```\n\nGenerating document with Terraform configuration from AccTest:\n\n```\n$ go run main.go -name azurerm_resource_group -brand-name \"Resource Group\" -type \"resource\" -resource-id \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1\" -website-path ../../../website/ -example -root-dir ../../.. -service-pkg ./internal/services/resource -testcase TestAccResourceGroup_basic\n```\n\n## Arguments\n\n* `-name` - (Required) The Name used for the Resource in Terraform e.g. `azurerm_resource_group`\n\n* `-brand-name` - (Required) The Brand Name used for this Resource in Azure e.g. `Resource Group` or `App Service (Web Apps)`\n\n* `-type` - (Required) The Type of Documentation to generate. Possible values are `data` (for a Data Source) or `resource` (for a Resource).\n\n* `-resource-id` - (Required when scaffolding a Resource) An Azure Resource ID which can be used as a placeholder in the import documentation.\n\n* `-website-path` - (Required) The path to the `./website` directory in the root of this repository.\n\n* `-example` - (Optional) Whether to generate the Terraform configuration example from AccTest?\n\n* `-root-dir` - (Optional) The path to the project root. Required when `-example` is set.\n\n* `-service-dir` - (Optional) The relative path to the service package (e.g. `./internal/services/network`). Required when `-example` is set.\n\n* `-test-case` - (Optional) The name of the AccTest where the Terraform configuration derives from. Required when `-example` is set.\n\n<!-- File: vendor/github.com/hashicorp/go-azure-sdk/resource-manager/azurestackhci/2024-01-01/extensions/README.md (Tokens: ~300 | Category: plugin-manifest) -->\n# extensions Documentation\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/azurestackhci/2024-01-01/extensions/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/azurestackhci/2024-01-01/extensions/README.md)\n\n<!-- File: vendor/github.com/hashicorp/go-azure-sdk/resource-manager/compute/2024-03-01/virtualmachineextensions/README.md (Tokens: ~300 | Category: plugin-manifest) -->\n# virtualmachineextensions Documentation\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/compute/2024-03-01/virtualmachineextensions/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/compute/2024-03-01/virtualmachineextensions/README.md)\n\n<!-- File: vendor/github.com/hashicorp/go-azure-sdk/resource-manager/compute/2025-04-01/virtualmachinescalesetextensions/README.md (Tokens: ~300 | Category: plugin-manifest) -->\n# virtualmachinescalesetextensions Documentation\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/compute/2025-04-01/virtualmachinescalesetextensions/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/compute/2025-04-01/virtualmachinescalesetextensions/README.md)\n\n<!-- File: vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hdinsight/2021-06-01/extensions/README.md (Tokens: ~300 | Category: plugin-manifest) -->\n# extensions Documentation\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hdinsight/2021-06-01/extensions/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hdinsight/2021-06-01/extensions/README.md)\n\n<!-- File: vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2022-11-10/machineextensions/README.md (Tokens: ~300 | Category: plugin-manifest) -->\n# machineextensions Documentation\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2022-11-10/machineextensions/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2022-11-10/machineextensions/README.md)\n\n<!-- File: vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2024-07-10/extensions/README.md (Tokens: ~300 | Category: plugin-manifest) -->\n# extensions Documentation\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2024-07-10/extensions/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2024-07-10/extensions/README.md)\n\n<!-- File: vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2024-07-10/machineextensions/README.md (Tokens: ~300 | Category: plugin-manifest) -->\n# machineextensions Documentation\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2024-07-10/machineextensions/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/hybridcompute/2024-07-10/machineextensions/README.md)\n\n<!-- File: vendor/github.com/hashicorp/go-azure-sdk/resource-manager/kubernetesconfiguration/2024-11-01/extensions/README.md (Tokens: ~300 | Category: plugin-manifest) -->\n# extensions Documentation\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/kubernetesconfiguration/2024-11-01/extensions/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/kubernetesconfiguration/2024-11-01/extensions/README.md)\n\n<!-- File: vendor/github.com/hashicorp/go-azure-sdk/resource-manager/storagemover/2023-03-01/agents/README.md (Tokens: ~300 | Category: subagent-persona) -->\n# Subagent: readme\n\nPath: `vendor/github.com/hashicorp/go-azure-sdk/resource-manager/storagemover/2023-03-01/agents/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/HEAD/vendor/github.com/hashicorp/go-azure-sdk/resource-manager/storagemover/2023-03-01/agents/README.md)\n</yakaai_skills>"}