# Terraform Skill Generate

> Generate missing version-specific Terraform skills from official HashiCorp release artefacts and changelogs, then register them with the Terraform dispatcher. Use when a stable Terraform minor release needs a new terraform-1-N skill or when refreshing this repository after a Terraform release.

- Skill: `cedws/terraform-skill-generate` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add cedws/terraform-skill-generate`
- Raw SKILL.md: https://api.skillmd.com/api/skills/cedws/terraform-skill-generate/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: cedws (https://skillmd.com/u/cedws)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/cedws/terraform-skill-generate

---


# Generate Terraform release skills

## Discover releases

1. Locate the sibling `terraform` skill and read its release table.
2. Fetch `https://releases.hashicorp.com/terraform/index.json` as JSON.
3. 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.
4. Normalise the version to `1.N` and sort candidates by numeric minor version.
5. Check for `../terraform-1-N/SKILL.md` before 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:

```text
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:

```yaml
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:

1. State that the overview applies to target Terraform versions of at least 1.N.
2. Explain each important feature and the situations it supports without directing the agent to adopt it universally.
3. Pair deprecated or removed patterns with their supported replacement and explain the operational difference.
4. Cover configuration, CLI, state, testing, backends, compatibility, and experiments only when the notes contain relevant material.
5. Include compact HCL examples only when they clarify correct syntax.
6. Do not invent recommendations, guarantees, provider support, or migration rules absent from the official notes.
7. Keep earlier-version guidance out unless it is necessary to explain what this release replaces.
8. 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:

1. Validate that the directory name and frontmatter name are both `terraform-1-N`.
2. Run the skill-creator `quick_validate.py` script on the generated directory.
3. Add one row to the sibling `terraform` skill's release table with version, ISO release date, and skill name.
4. Keep the table sorted in ascending numeric version order.
5. 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.

