devops-maintainability-checker について
devops-maintainability-checker は、Terraform や OpenTofu の設定を扱うエンジニア向けに、インフラコードの保守性を確認するスキルです。書式、命名、変数説明、値の重複、バージョン制約を検査し、レポートを作成します。
主な機能
- 01リソース名と変数名を確認
- 02コード書式を検証
- 03変数の説明を確認
- 04値の重複と locals の利用を確認
- 05バージョン制約を確認
活用シーン
- 01インフラコードの保守性レビュー
- 02提出前の Terraform 設定チェック
- 03説明やバージョン制約の不足箇所を特定
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ majesticlabs-dev/ majestic-marketplace --skill devops-maintainability-checkerインストール後、Claude Code で/devops-maintainability-checkerを入力して読み込まれたか確認します。
詳細
DevOps 保守性チェッカー
インフラストラクチャコードが保守しやすいパターンに従っているかを検証します。
保守性チェックリスト
| チェック項目 | 良い例 | 悪い例 |
|---|---|---|
| リソースの命名 | 一貫性のある ${project}-${env}-${type} | ランダム、または一貫性がない |
| 変数の命名 | デフォルト値があり、説明的 | 分かりにくく、説明がない |
| コードのフォーマット | tofu fmt に合格する | インデントが一貫していない |
| DRY 原則 | 繰り返し使う値に Locals を使用する | 値をハードコードして繰り返す |
| バージョン制約 | ~> X.Y で固定する | 固定されていない、または厳密なバージョン |
検証コマンド
# 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 ~>"
命名規則
リソース名:
# GOOD
resource "aws_instance" "web" {
tags = {
Name = "${var.project}-${var.environment}-web"
}
}
# BAD
resource "aws_instance" "instance1" {
tags = {
Name = "my-server"
}
}
変数名:
# 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 パターン
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"
})
}
繰り返しを避ける:
# 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
}
バージョン制約
# 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"
レポート形式
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
コメント
Markdown 対応