mcpField
Y
yq-yaml-processing

yq-yaml-processing

github.com/laurigatesデータ・データベース5976 回インストール1 日前に更新
リポジトリ

yq-yaml-processing について

yq v4+を使うエージェント向けに、YAMLの検索、変更、変換方法を案内するスキルです。複数ドキュメントや設定ファイルの編集も扱います。

主な機能

  1. 01パス式による YAML の検索と絞り込み
  2. 02YAML 構造の変換
  3. 03複数ドキュメントの処理
  4. 04コメントとキー順を保ったインプレース編集
  5. 05YAML、JSON、XML などの相互変換

活用シーン

  1. 01Kubernetes マニフェストの項目更新
  2. 02GitHub Actions ワークフローの編集
  3. 03YAML 設定のマージ
  4. 04Helm values ファイルの処理

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/laurigates/claude-plugins --skill yq-yaml-processing

インストール後、Claude Code で/yq-yaml-processingを入力して読み込まれたか確認します。

同梱ファイルREFERENCE.md

詳細

yq による YAML 処理

jq に似た構文を持つ軽量なコマンドライン YAML プロセッサー、yq v4+ を使用して YAML データを処理、クエリ、変換するための専門知識です。

このスキルを使用する場面

このスキルを使用する場面...代わりに別のスキルを使用する場面...
YAML ファイルをクエリまたは変更する場合入力が JSON のみの場合 — jq-json-processing を使用してください
コメントとキーの順序を保持したまま YAML をインプレース編集する場合YAML、JSON、CSV、TOML にまたがる複数ステップの変換を行う場合 — nushell-data-processing を使用してください
Kubernetes マニフェストまたは Actions ワークフローを対象に更新する場合Kubernetes を全面的に管理する場合(kubectl を使用してください)、または XML を扱う場合(xmlstarlet を使用してください)
YAML 設定をマージする場合多数のファイルにまたがって集計またはグループ化する場合 — nushell-data-processing を使用してください

主な専門知識

YAML 操作

  • パス式を使って YAML をクエリおよびフィルター処理する
  • YAML の構造と形式を変換する
  • 複数ドキュメントの YAML をサポートする
  • YAML、JSON、XML、その他の形式を相互に変換する

設定管理

  • Kubernetes マニフェストを変更する
  • GitHub Actions ワークフローを更新する
  • Helm の values ファイルを処理する
  • アプリケーション設定を管理する

基本コマンド

基本的なクエリ
# 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
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
YAML の変更(インプレース)
# 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
複数ドキュメントの 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
オブジェクト操作
# 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 出力(パイプ処理用)
# 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

クイックリファレンス

演算子
  • .field - フィールドにアクセス
  • .[] - 配列/オブジェクトを反復処理
  • | - パイプ(操作を連結)
  • , - 複数の出力
  • // - 代替演算子(デフォルト値)
  • * - オブジェクトをマージ(浅いマージ)
  • *+ - オブジェクトをディープマージ
関数
  • keys、values - オブジェクトのキー/値
  • length - 配列/オブジェクト/文字列の長さ
  • select() - フィルター処理
  • sort_by() - ソート
  • group_by() - グループ化
  • unique - 重複を削除
  • has() - フィールドの有無を確認
  • type - 値の型を取得
  • add - 合計または連結
  • del() - フィールドを削除
フラグ
フラグ説明
-iインプレース編集
-o出力形式(json、yaml、xml、csv、tsv、props)
-p入力形式(json、yaml、xml)
-Iインデント(デフォルト:2)
-r生の出力(引用符なし)
-nnull 入力(最初から作成)
-s複数ドキュメントの YAML を分割
文字列関数
  • split()、join() - 文字列/配列の変換
  • contains() - 文字列/配列に含まれるか確認
  • test() - 正規表現によるマッチ
  • sub()、gsub() - 文字列の置換
  • upcase、downcase - 大文字/小文字の変換

詳しい例、高度なパターン、ベストプラクティスについては、REFERENCE.md を参照してください。

リソース

コメント