yq-yaml-processing

v2026.09.24

yq YAML processing: query, filter, transform YAML. Use when parsing configs, modifying Kubernetes manifests or GitHub Actions workflows, or transforming YAML.

GitHub
安装命令
npx skhub add laurigates/yq-yaml-processing
Markdown
SKILL.md

yq YAML Processing

Expert knowledge for processing, querying, and transforming YAML data using yq v4+, the lightweight command-line YAML processor with jq-like syntax.

When to Use This Skill

Use this skill when...Use another skill instead when...
Querying or modifying YAML filesThe input is JSON only — use jq-json-processing
Editing YAML in place while preserving comments and key orderMulti-step transforms spanning YAML, JSON, CSV, TOML — use nushell-data-processing
Targeted updates to a Kubernetes manifest or Actions workflowFull Kubernetes management (use kubectl); XML (use xmlstarlet)
Merging YAML configurationsAggregating or grouping across many files — use nushell-data-processing

Core Expertise

YAML Operations

  • Query and filter YAML with path expressions
  • Transform YAML structure and shape
  • Multi-document YAML support
  • Convert between YAML, JSON, XML, and other formats

Configuration Management

  • Modify Kubernetes manifests
  • Update GitHub Actions workflows
  • Process Helm values files
  • Manage application configurations

Essential Commands

Basic Querying

# Pretty-print YAML
yq '.' file.yaml

# Extract specific field
yq '.fieldName' file.yaml

# Extract nested field
yq '.spec.containers[0].name' pod.yaml

# Access array element
yq '.[0]' array.yaml
yq '.items[2]' data.yaml

Reading YAML

# Read specific field
yq '.metadata.name' deployment.yaml

# Read nested structure
yq '.spec.template.spec.containers[].image' deployment.yaml

# Read with default value
yq '.optional // "default"' file.yaml

# Check if field exists
yq 'has("fieldName")' file.yaml

Modifying YAML (In-Place)

# Update field value
yq -i '.metadata.name = "new-name"' file.yaml

# Update nested field
yq -i '.spec.replicas = 3' deployment.yaml

# Add new field
yq -i '.metadata.labels.app = "myapp"' file.yaml

# Delete field
yq -i 'del(.spec.nodeSelector)' file.yaml

# Append to array
yq -i '.items += {"name": "new-item"}' file.yaml

# Update all matching elements
yq -i '(.items[] | select(.name == "foo")).status = "active"' file.yaml

Multi-Document YAML

# Split multi-document YAML
yq -s '.metadata.name' multi-doc.yaml

# Select specific document (0-indexed)
yq 'select(document_index == 0)' multi-doc.yaml

# Process all documents
yq eval-all '.' multi-doc.yaml

# Filter documents
yq 'select(.kind == "Deployment")' k8s-resources.yaml

# Combine YAML files
yq eval-all '. as $item ireduce ({}; . * $item)' file1.yaml file2.yaml

Object Operations

# Get all keys
yq 'keys' file.yaml

# Select specific fields
yq '{name, version}' file.yaml

# Merge objects
yq '. * {"updated": true}' file.yaml
yq eval-all 'select(fileIndex == 0) * select(fileIndex == 1)' base.yaml override.yaml

# Deep merge
yq eval-all '. as $item ireduce ({}; . *+ $item)' base.yaml override.yaml

JSON Output (for piping)

# YAML to JSON
yq -o=json '.' file.yaml

# Compact single-line JSON — the form to pipe into jq or a tool that reads stdin
yq -o=json -I=0 '.' file.yaml

Quick Reference

Operators

  • .field - Access field
  • .[] - Iterate array/object
  • | - Pipe (chain operations)
  • , - Multiple outputs
  • // - Alternative operator (default value)
  • * - Merge objects (shallow)
  • *+ - Deep merge objects

Functions

  • keys, values - Object keys/values
  • length - Array/object/string length
  • select() - Filter
  • sort_by() - Sort
  • group_by() - Group
  • unique - Remove duplicates
  • has() - Check field existence
  • type - Get value type
  • add - Sum or concatenate
  • del() - Delete field

Flags

FlagDescription
-iIn-place edit
-oOutput format (json, yaml, xml, csv, tsv, props)
-pInput format (json, yaml, xml)
-IIndent (default: 2)
-rRaw output (no quotes)
-nNull input (create from scratch)
-sSplit multi-document YAML

String Functions

  • split(), join() - String/array conversion
  • contains() - String/array contains
  • test() - Regex match
  • sub(), gsub() - String substitution
  • upcase, downcase - Case conversion

For detailed examples, advanced patterns, and best practices, see REFERENCE.md.

Resources

发现
标签

此技能尚未发布标签。

版本
最新版本元数据

版本

v2026.09.24

发布时间

2026年9月24日

分类

未分类

许可证

MIT

源路径

tools-plugin/skills/yq-yaml-processing

默认分支

main

最新提交

1668324

Tree SHA

b2d4cc3