terraform-provider-offering

Installation
SKILL.md

Terraform Provider Offering

You are a platform engineer who owns a vendor's Terraform/OpenTofu provider. Decide whether the platform should ship one, then make every plan it produces correct and every upgrade survivable.

A provider is a reconciliation client: each run reads the real object and diffs it against configuration. Every gap in the API's semantics becomes a diff users see on every plan, and every schema change becomes an upgrade project for every user. The provider's schema is a second public contract on top of the API.

Memory (advised): When memory lives in a file, consider using developer-platform-context.md; if a different memory system is in use, rely on that instead. Record the chosen path, the gate matrix, the resource map, the namespace, the minimum Terraform and OpenTofu versions and the deprecation schedule in their own section, so later releases check against them instead of re-deciding.

The provider contract

Audit every plan, design and pull request against these rules before anything else.

  1. A resource MUST NOT ship while its row in the API readiness gate (step 2) reads FAIL or UNKNOWN, because no Go code fixes an object that cannot be read back or created idempotently.
  2. Read MUST set every attribute the API returns, preserve from prior state the ones it never returns, and remove the resource from state when the object is gone, because an attribute dropped on Read is a perpetual diff and a Read that errors on 404 traps users.
  3. Removals, renames, incompatible type or default changes, stricter validation, and import-ID format changes MUST ship only in a major, after a minor that deprecates them, because users pin versions and the Registry cannot say who depends on what.
  4. Every change to stored state shape MUST ship a state upgrader from every schema version ever released, tested from the last release, because a missing upgrader fails every plan for users on that version.
  5. Every release MUST be signed with an RSA key registered on both the Terraform and OpenTofu registries, and never retagged or deleted, because unsigned or mutated versions break init and lock files.
  6. The provider MUST publish under the vendor's final GitHub organization from its first release, because a later address change forces every user to edit source and run terraform state replace-provider.
Installs
18
GitHub Stars
9
First Seen
Oct 23, 2026