| name | terraform-pr-workflow |
| description | PR workflow Skill for Terraform/Terragrunt repos: branch naming, PR hygiene, read-only CI gates, and versioning expectations for interface changes. |
| allowed-tools | Bash Read Edit Glob Grep |
Terraform PR Workflow Skill
When to Use This Skill
Use this Skill when preparing or reviewing a PR in Terraform/Terragrunt repos, especially shared module libraries and their consumers.
Goal: catch workflow/process issues early (before apply-time surprises).
Severity Tags
[BLOCKING] – cannot merge as-is (missing plan rationale, unsafe workflow, breaking change not called out).
[SHOULD_FIX] – strongly recommended before merge (docs drift, missing versioning note).
[NIT] – minor polish.
Checks This Skill Enforces
1) Branch and PR hygiene
- Branch name uses a standard prefix (
feat/, fix/, chore/, docs/, refactor/).
- PR title matches intent (don’t hide breaking changes behind “chore” wording).
- One PR = one coherent change; if it’s a stack of unrelated edits, recommend splitting.
2) PR description quality
PR description must include either:
- Plan evidence (preferred):
- module-level validation summary, or
terragrunt plan output summary for the relevant stacks, or
- A clear explanation of why plans weren’t run (missing creds, non-executable change, doc-only PR, etc.) plus what validation was done instead (fmt/validate/lint).
Strongly preferred sections (when applicable):
What changed
Plan / Validation
Risk / Rollout
Breaking changes (if any)
Versioning (module repos)
3) CI must be read-only
- CI should run
fmt, validate, tflint, and optionally plan.
- CI should not run
apply.
- If the repo currently has
apply in CI, flag as [BLOCKING] and recommend moving applies to a gated/manual workflow.
- Verify by scanning
.github/workflows/*.yml for apply usage (terraform apply, terragrunt apply, run-all apply).
4) Versioning expectations for module libraries
If the PR changes module interface (examples):
variables.tf inputs added/renamed/removed
outputs.tf outputs added/renamed/removed
- required provider/terraform versions changed
Then require:
- Explicit callout in PR description (“Interface change”) with migration notes.
- A versioning plan aligned with the repo’s conventions (tags/releases/
VERSIONING.md when present).
- “Moving ref” avoidance: consumers should pin to a tag/SHA rather than a branch when the repo supports releases.
5) Breaking changes and changelog/release notes
If changes are breaking (renames/removals, behavior changes, tighter validations):
- PR must include a
Breaking changes section with:
- what changed,
- why,
- how to migrate,
- what version/tag will contain the change.
- If the repo maintains a changelog, require an entry.
- If it doesn’t, require release notes in the PR body.
Output Format
Return:
Verdict: MERGE-READY / NOT READY
Findings: bullets with [BLOCKING] / [SHOULD_FIX] / [NIT]
Suggested edits: concrete fixes to branch name / PR title / PR body sections