// 'Proactive yaml intelligence: automatically activates when working with Use when appropriate context detected. Trigger with relevant phrases based on skill purpose.
| name | yaml-master |
| description | 'Proactive yaml intelligence: automatically activates when working with Use when appropriate context detected. Trigger with relevant phrases based on skill purpose. |
โก This skill activates AUTOMATICALLY when you work with YAML files!
This skill proactively activates when Claude detects:
.yaml or .yml filesNo commands needed! Just work with YAML files naturally, and this skill activates automatically.
What It Does:
Example:
# โ INVALID YAML
services:
web:
image: nginx
ports: # Mixed tabs and spaces - ERROR!
- "80:80"
Agent Action: Automatically detects mixed indentation, suggests fix:
# โ
FIXED YAML
services:
web:
image: nginx
ports: # Consistent 2-space indentation
- "80:80"
What It Does:
Example:
# Input YAML
user:
name: Jeremy
age: 35
roles:
- admin
- developer
Agent Action: Infers schema:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"user": {
"type": "object",
"properties": {
"name": { "type": "string" },
"age": { "type": "integer" },
"roles": {
"type": "array",
"items": { "type": "string" }
}
},
"required": ["name", "age", "roles"]
}
}
}
What It Does:
Example - YAML to JSON:
# config.yaml
database:
host: localhost
port: 5432
credentials: &creds
user: admin
pass: secret
Agent Action: Converts to JSON:
{
"database": {
"host": "localhost",
"port": 5432,
"credentials": {
"user": "admin",
"pass": "secret"
}
}
}
What It Does:
Example:
# Minimal input
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
Agent Action: Expands with best practices:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
labels:
app: nginx
version: "1.0"
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
version: "1.0"
spec:
containers:
- name: nginx
image: nginx:1.25-alpine
ports:
- containerPort: 80
name: http
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"
livenessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 5
periodSeconds: 5
securityContext:
runAsNonRoot: true
runAsUser: 1000
allowPrivilegeEscalation: false
What It Does:
Example:
# โ SUBOPTIMAL
version: '3'
services:
db:
image: postgres
environment:
POSTGRES_PASSWORD: admin123 # Hardcoded secret!
Agent Action: Suggests secure alternative:
# โ
OPTIMIZED
version: '3.8'
services:
db:
image: postgres:15-alpine
environment:
POSTGRES_PASSWORD_FILE: /run/secrets/db_password
secrets:
- db_password
volumes:
- db_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 5s
retries: 5
restart: unless-stopped
secrets:
db_password:
file: ./secrets/db_password.txt
volumes:
db_data:
driver: local
What It Does:
Example - GitHub Actions:
# โ INEFFICIENT
name: CI
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm install # No caching!
- run: npm test
Agent Action: Optimizes with caching:
# โ
OPTIMIZED
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18, 20, 22]
steps:
- uses: actions/checkout@v4
- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
- name: Install dependencies
run: npm ci # Faster than npm install
- name: Run tests
run: npm test
- name: Upload coverage
if: matrix.node-version == 20
uses: codecov/codecov-action@v4
What It Does:
Linting Rules:
# Rule 1: Consistent 2-space indentation
# Rule 2: No duplicate keys
# Rule 3: Quoted strings for special characters
# Rule 4: Explicit document markers (---, ...)
# Rule 5: No tabs, only spaces
# Rule 6: Max line length 120 characters
# Rule 7: Comments aligned at column 40
What It Does:
Example:
# โ REPETITIVE
services:
web:
image: nginx
restart: always
logging:
driver: json-file
options:
max-size: "10m"
api:
image: node:20
restart: always
logging:
driver: json-file
options:
max-size: "10m"
Agent Action: Refactors with anchors:
# โ
DRY (Don't Repeat Yourself)
x-common-config: &common-config
restart: always
logging:
driver: json-file
options:
max-size: "10m"
services:
web:
<<: *common-config
image: nginx
api:
<<: *common-config
image: node:20
Works with YAML files containing multiple documents:
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
---
Agent Action: Validates each document independently, ensures consistency across documents.
Manages environment overrides and templates:
# base.yaml
database: &db
host: localhost
port: 5432
# production.yaml (inherits from base)
database:
<<: *db
host: prod-db.example.com
ssl: true
Supports advanced YAML data types:
# Timestamps
created_at: 2025-10-24T23:00:00Z
# Binary data (base64)
ssl_cert: !!binary |
R0lGODlhDAAMAIQAAP//9/X
17unp5WZmZgAAAOfn515eXv
# Null values
optional_field: null
another_null: ~
# Custom tags
color: !rgb [255, 128, 0]
User: "My Kubernetes manifest won't apply, fix it"
Agent Action:
User: "Convert this JSON to YAML for my config file"
Agent Action:
User: "Create docker-compose.yaml for nginx + postgres + redis"
Agent Action:
User: "My GitHub Actions workflow is slow, optimize it"
Agent Action:
| Error | Cause | Fix |
|---|---|---|
mapping values are not allowed here | Incorrect indentation | Align keys properly |
found duplicate key | Same key defined twice | Remove or rename duplicate |
expected <block end>, but found | Tab instead of spaces | Replace tabs with spaces |
found undefined tag handle | Custom tag without definition | Define tag or remove |
could not find expected ':' | Missing colon after key | Add colon |
โ YAML 1.2 Specification: Fully compliant โ YAML 1.1: Backward compatible where possible โ JSON Schema Draft 7: Supports schema validation โ OpenAPI 3.1: Compatible with OpenAPI specs โ Kubernetes API: Validates against all stable APIs โ Docker Compose v3.8: Full support for latest spec
# app-config.yaml
app:
name: MyApp
version: 1.0.0
environment: production
server:
host: 0.0.0.0
port: 8080
database:
url: postgres://localhost:5432/mydb
version: '3.8'
services:
web:
build: ./web
ports:
- "3000:3000"
depends_on:
- api
- redis
api:
build: ./api
environment:
DATABASE_URL: postgres://db:5432/app
depends_on:
db:
condition: service_healthy
db:
image: postgres:15-alpine
volumes:
- db_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD", "pg_isready"]
interval: 5s
redis:
image: redis:7-alpine
command: redis-server --appendonly yes
volumes:
db_data:
apiVersion: v1
kind: Secret
metadata:
name: app-secrets
type: Opaque
stringData:
DATABASE_URL: postgres://user:pass@db:5432/app
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-app
labels:
app: web
spec:
replicas: 3
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: web
image: myapp:latest
envFrom:
- secretRef:
name: app-secrets
resources:
requests:
memory: "128Mi"
cpu: "100m"
limits:
memory: "256Mi"
cpu: "500m"
livenessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 30
readinessProbe:
httpGet:
path: /ready
port: 8080
initialDelaySeconds: 5
---
apiVersion: v1
kind: Service
metadata:
name: web-service
spec:
selector:
app: web
ports:
- port: 80
targetPort: 8080
type: LoadBalancer
Diagnosis:
: with space after)Diagnosis:
Diagnosis:
MIT License - See LICENSE file
Author: Jeremy Longshore Plugin: 002-jeremy-yaml-master-agent Spec Compliance: Anthropic Agent Skills Spec v1.0
๐ค Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com
If execution fails: