搜索

PythonReactSEOPDF
GitHub Skill

devops-maintainability-checker

Infrastructure maintainability verification covering naming conventions, formatting, DRY patterns, and version constraints.

majesticlabs-dev☆ 20 仓库 Stars3 仓库 Forks

安装与使用

请根据来源仓库和你的 AI 工具说明安装此技能。先阅读技能文件和依赖要求,再添加到工作流。

查看来源 ↗使用指南

技能说明

DevOps Maintainability Checker

Verify infrastructure code follows maintainable patterns.

Maintainability Checklist

Check Good Bad
Resource naming Consistent ${project}-${env}-${type} Random or inconsistent
Variable naming Descriptive with defaults Cryptic, no descriptions
Code formatting tofu fmt passes Inconsistent indentation
DRY principle Locals for repeated values Hardcoded values repeated
Version constraints Pinned ~> X.Y Unpinned or exact versions

Verification Commands

# Format check
tofu fmt -check -recursive 2>&1 || echo "FAIL: Needs formatting"

# Variable descriptions
grep -L "description" variables.tf && echo "WARN: Variables missing descriptions"

# Locals usage (should have some)
grep -c "local\." *.tf | awk -F: '$2 < 3 {print "WARN: Underusing locals in "$1}'

# Hardcoded values (potential DRY violations)
grep -E '^\s+(region|zone|size)\s*=\s*"[^$]' *.tf

# Provider version constraints
grep -E "version\s*=\s*\"[0-9]" *.tf | grep -v "~>" && echo "WARN: Exact versions, use ~>"

Naming Conventions

Resource Names:

# GOOD
resource "aws_instance" "web" {
  tags = {
    Name = "${var.project}-${var.environment}-web"
  }
}

# BAD
resource "aws_instance" "instance1" {
  tags = {
    Name = "my-server"
  }
}

Variable Names:

# GOOD
variable "database_instance_class" {
  description = "RDS instance class for the database"
  type        = string
  default     = "db.t3.micro"
}

# BAD
variable "db_class" {
  type = string
}

DRY Patterns

Use Locals:

locals {
  common_tags = {
    Project     = var.project
    Environment = var.environment
    ManagedBy   = "terraform"
  }
  name_prefix = "${var.project}-${var.environment}"
}

resource "aws_instance" "web" {
  tags = merge(local.common_tags, {
    Name = "${local.name_prefix}-web"
  })
}

Avoid Repetition:

# BAD - hardcoded everywhere
resource "aws_instance" "web" {
  tags = { Project = "myapp", Environment = "prod" }
}
resource "aws_instance" "api" {
  tags = { Project = "myapp", Environment = "prod" }
}

# GOOD - use locals
resource "aws_instance" "web" {
  tags = local.common_tags
}

Version Constraints

# GOOD - allows patch updates
terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.0"
    }
  }
}

# BAD - exact version (breaks updates)
version = "5.31.0"

# BAD - no constraint (unpredictable)
version = ">= 5.0"

Report Format

MAINTAINABILITY SCORE: X/10

Formatting: PASS/FAIL
Variable Descriptions: X/Y documented
Locals Usage: GOOD/UNDERUSED
Naming Consistency: CONSISTENT/INCONSISTENT
Version Constraints: PROPER/NEEDS FIX

Issues Found:
- [ ] Run `tofu fmt -recursive`
- [ ] Add descriptions to variables: X, Y, Z
- [ ] Extract repeated value "us-east-1" to local
- [ ] Change exact version to ~> constraint

使用示例

查看来源仓库中的使用示例与配置说明。

查看来源 ↗

来源历史

收录时间
2026-01-20
索引更新时间
2026-02-04
Branch
main

收录与同步日期属于本站记录。源码修改历史请查看来源仓库。

GitHub ↗

chat Comments (0)

chat_bubble_outline

No comments yet. Be the first to share your thoughts!