Skip to content

YAML

YAML is a naming-only language. Since YAML has no concept of imports, dependency_mode / external_mode / allow_call_patterns are not used. Only name_deny naming convention checks are supported.

Configuration example

[project]
name = "my-k8s-project"
root = "."
languages = ["yaml"]
[[layers]]
name = "config"
paths = ["config/**"]
dependency_mode = "opt-out"
external_mode = "opt-out"
name_deny = ["aws", "gcp"]
[[layers]]
name = "manifests"
paths = ["manifests/**"]
dependency_mode = "opt-out"
external_mode = "opt-out"

Name classification

YAML elementNameKindExample
Mapping keySymbolaws_region in aws_region:
Plain scalar valueStringLiteralus-east-1 in region: us-east-1
Quoted scalar valueStringLiteralmy-app:latest in image: "my-app:latest"
CommentComment# Deploy to AWS

Use cases

Kubernetes manifest naming rules

Prevent cloud-provider-specific keywords from appearing in certain layers:

[[layers]]
name = "base"
paths = ["base/**"]
name_deny = ["aws", "gcp", "azure"]

MLOps config file checks

Separate environment-specific keywords:

[[layers]]
name = "model-config"
paths = ["configs/models/**"]
name_deny = ["staging", "production"]
name_targets = ["string_literal"] # check values only

Supported file extensions

Both .yaml and .yml files are analyzed.

Limitations

  • YAML has no imports, so dependency_mode / external_mode should always be set to opt-out
  • allow_call_patterns is not applicable
  • Only name_deny provides meaningful checks