Contributing Guidelines
July 16, 2026 ยท View on GitHub
Thank you for your interest in contributing to our Terraform modules repository! This document provides guidelines and instructions for contributing.
Code of Conduct
Please follow the project's code of conduct when contributing.
Getting Started
- Fork the repository
- Clone your fork
- Set up your development environment (see Development Setup)
- Create a new branch for your changes
Development Workflow
-
Branch Naming
- Use descriptive branch names
- Follow the pattern:
type/description - Examples:
feature/new-modulefix/vpc-securitydocs/readme-update
-
Commit Messages
- Use clear, descriptive messages
- Follow conventional commits format
- Reference issues when applicable
- Include release type for version bumps (e.g.,
release-type: minor)
-
Pull Requests
- Create PRs early for discussion
- Keep PRs focused and small
- Update documentation
- Update CHANGELOG.md under
[Unreleased]section - Specify release type if changes should trigger a new version
- Include tests and examples
Module Development
Creating New Modules
- Use the template in
modules/__template__ - Follow the Modules Guide
- Implement best practices from Best Practices
- Include examples and tests
Updating Existing Modules
- Maintain backward compatibility
- Update documentation
- Add migration guides if needed
- Test changes thoroughly
- Consider versioning impact - breaking changes require major version bump
Testing
Required Tests
-
Unit Tests
- Variable validation
- Output values
- Error conditions
-
Integration Tests
- Real provider testing
- Module composition
- Error handling
-
Security Tests
- Terraform security checks
- IAM validation
- Encryption verification
Running Tests
This repository does not currently provide a root Makefile. Before opening a
pull request, run the relevant local tools for the module you changed and make
sure the GitHub Actions checks pass:
- Terraform formatting and validation for changed modules.
- Terraform documentation generation when module inputs or outputs change.
- MegaLinter checks for documentation, security, and repository hygiene.
Documentation
Required Documentation
-
Module Documentation
- README.md
- Input/output documentation
- Usage examples
- Requirements
-
Code Documentation
- Comments for complex logic
- Design decisions
- External references
Generating Documentation
# Generate module documentation
terraform-docs markdown . > docs/MODULE.md
# Update README.md
terraform-docs markdown . > README.md
Review Process
-
Code Review
- All PRs require review
- Address review comments
- Keep PRs up to date
-
CI/CD Checks
- All checks must pass
- Fix any failures
- Update if needed
-
Final Steps
- Squash commits if requested
- Update PR description
- Request final review
Release Process
This repository uses automated releases with semantic versioning. Contributors should follow these guidelines:
๐ Versioning Strategy
We use Semantic Versioning (SemVer) with the format vMAJOR.MINOR.PATCH:
- MAJOR: Breaking changes or incompatible API changes
- MINOR: New features in a backwards-compatible manner (default)
- PATCH: Backwards-compatible bug fixes
๐ Changelog Management
Required for all contributions:
- Update CHANGELOG.md under the
[Unreleased]section - Categorize your changes:
Added- New features or modulesChanged- Changes in existing functionalityFixed- Bug fixesSecurity- Vulnerability fixesDeprecated- Soon-to-be removed featuresRemoved- Removed features
Example:
## [Unreleased]
### Added
- New AWS DocumentDB module (#123)
### Fixed
- Fixed VPC security group rules validation (#124)
๐ Release Types
Specify the release type in your PR description or commit message:
release-type: major- For breaking changesrelease-type: minor- For new features (default)release-type: patch- For bug fixes
Example commit:
feat: add new EKS module with advanced networking
release-type: minor
- Added comprehensive EKS module
- Includes VPC integration and security best practices
๐ค Automated Releases
Releases are automatically triggered when:
- Changes are merged to
mainwith updates toCHANGELOG.md - Module changes are detected in the
modules/directory - Manual trigger via GitHub Actions workflow dispatch
๐ Contributor Checklist
Before submitting a PR:
- Updated
CHANGELOG.mdunder[Unreleased]section - Specified release type if changes should trigger a new version
- Tested all changes locally
- Updated module documentation if applicable
- Followed semantic versioning principles
๐ Additional Resources
For detailed information about our versioning strategy, see Versioning Strategy.
Getting Help
- Open an issue for bugs
- Use discussions for questions
- Join our community chat
- Check existing documentation