Generate Terraform release skills
Discover releases
- Locate the sibling
terraformskill and read its release table. - Fetch
https://releases.hashicorp.com/terraform/index.jsonas JSON. - Consider only stable initial minor releases at Terraform 1.15 or later whose version matches
1.N.0. Exclude alphas, betas, release candidates, development builds, and patch releases. - Normalise the version to
1.Nand sort candidates by numeric minor version. - Check for
../terraform-1-N/SKILL.mdbefore retrieving or generating anything. Skip every version whose skill already exists. Never replace, merge, or regenerate an existing version skill.
Treat the HashiCorp release index as the authority that an artefact is stable. Do not infer stability from a roadmap, alpha build, release candidate, branch, draft changelog, tag timestamp, or current date.
Retrieve official release notes
For each missing stable version, fetch the official Markdown changelog from:
https://raw.githubusercontent.com/hashicorp/terraform/v1.N/CHANGELOG.md
Find the exact ## 1.N.0 (Month D, YYYY) section and stop before the next release or previous-releases section. Convert that heading's date to ISO YYYY-MM-DD. Require the changelog version and HashiCorp release index version to agree.
If the branch changelog is unavailable, use the matching stable GitHub release at https://github.com/hashicorp/terraform/releases/tag/v1.N.0. Do not use search snippets, third-party summaries, issue commentary, prerelease notes, or model memory as substitutes for complete official notes.
Select useful changes
Extract changes that affect how practitioners should write, modernise, validate, test, plan, import, or operate Terraform:
- configuration-language features, functions, blocks, and expression behaviour;
- CLI commands, flags, output formats, automation interfaces, and validation behaviour;
- state, planning, import, refactoring, backend, provider-installation, and lock-file semantics;
- Terraform test features and machine-readable test output;
- deprecations, removals, upgrade requirements, and clear replacements;
- platform or runtime changes that affect compatibility or deployment;
- experimental features, clearly labelled with their opt-in mechanism and stability limits.
Leave out patch-release material, ordinary bug fixes, internal implementation changes with no practitioner action, exhaustive backend details, performance claims that do not change a decision, and long lists of minor diagnostics.
Write the skill
Create the new skill with the skill-creator initialisation script so it includes SKILL.md and agents/openai.yaml. Create no other resource directories unless the release requires reusable assets or scripts.
Normalise every generated description to this exact template, replacing 1.N and YYYY-MM-DD with the discovered version and release date:
description: Apply Terraform 1.N language, CLI, state, testing, migration, and behaviour changes. Load for Terraform work targeting 1.N or later when the model's knowledge may predate the YYYY-MM-DD release.
Keep the description on one physical line. Do not add feature names, URLs, Markdown, or extra frontmatter fields.
Write a concise factual body:
- State that the overview applies to target Terraform versions of at least 1.N.
- Explain each important feature and the situations it supports without directing the agent to adopt it universally.
- Pair deprecated or removed patterns with their supported replacement and explain the operational difference.
- Cover configuration, CLI, state, testing, backends, compatibility, and experiments only when the notes contain relevant material.
- Include compact HCL examples only when they clarify correct syntax.
- Do not invent recommendations, guarantees, provider support, or migration rules absent from the official notes.
- Keep earlier-version guidance out unless it is necessary to explain what this release replaces.
- Keep the skill concise enough to load alongside other release skills.
Use descriptive, non-imperative wording in generated release bodies. Avoid directive openings such as “Use”, “Do”, “Prefer”, “Replace”, “Run”, “Enable”, or “Require”.
Set agents/openai.yaml to a display name of Terraform 1.N, a short description of Apply Terraform 1.N release guidance, and a one-sentence default prompt that explicitly mentions $terraform-1-N.
Register and validate
After writing a new skill:
- Validate that the directory name and frontmatter name are both
terraform-1-N. - Run the skill-creator
quick_validate.pyscript on the generated directory. - Add one row to the sibling
terraformskill's release table with version, ISO release date, and skill name. - Keep the table sorted in ascending numeric version order.
- Report skipped existing skills separately from newly generated skills.
If generation or validation fails for one version, do not register that version and continue with later independent candidates.