## TL;DR
Add the missing provider construct to your stack before calling synth. If the error names `aws`, add `new AwsProvider(stack, "aws", { region: "us-east-1" })` (TypeScript) or the equivalent in your language, then re-run `cdktf synth`.

## The error
```
panic: "Validation failed with the following errors:
  [cdktf-go-sample] Found resources without a matching provider. Please make sure to add the following providers to your stack: aws"
...
cdktf encountered an error while synthesizing
Synth command: go run main.go
Error:         non-zero exit code 1
```

## Fix it
1. Read the provider name at the end of the error (`aws` in this example).
2. Open your stack file (`main.ts`, `main.py`, or `main.go`) and add the provider construct at the top of the stack constructor:
   - TypeScript: `new AwsProvider(this, "aws", { region: "us-east-1" });`
   - Python: `AwsProvider(self, "aws", region="us-east-1")`
   - Go: `aws.NewAwsProvider(stack, jsii.String("aws"), &aws.AwsProviderConfig{Region: jsii.String("us-east-1")})`
3. If the provider package is not installed, add it first: `npm install @cdktf/provider-aws` (TS), `pipenv install cdktf-cdktf-provider-aws` (Python), or `go get` the generated bindings (Go).
4. Re-run `cdktf get` if the bindings were generated before the provider was added.
5. Re-run `cdktf synth` and confirm it completes without the panic.

Expected result: synth finishes and `cdktf.out/stacks/[stack]/cdk.tf.json` is generated.

## When to use this
- `cdktf synth` panics with "Found resources without a matching provider"
- You added a resource construct but never instantiated its provider

## When NOT to use this
- The error is about a missing Terraform *variable*, not a provider (see the missing-variable skill)
- The provider exists but `terraform init` fails to download it (that is a registry/network issue)

## Root cause
CDKTF validates at synth time that every resource in a stack has a provider construct of the matching type registered in that stack. Unlike Terraform, which can infer providers from resource type prefixes, CDKTF requires the explicit provider object. The validation runs inside the jsii runtime before any Terraform JSON is emitted, so the failure surfaces as a Go panic (or the language equivalent) rather than a Terraform error.

## Edge cases
- Multiple stacks: the provider must be added to *each* stack that uses its resources, not just one.
- Aliased providers: if resources use a provider alias, instantiate the provider with that alias.
- `cdktf get` regenerates bindings into `.gen` or `imports`; a stale generation can hide a provider you already added, so re-run `cdktf get` after changing providers.