jq-yq
JSONやYAML形式のデータをコマンドラインで解析、変換、抽出するなど、構造化されたデータを効率的に操作するSkill。
📜 元の英語説明(参考)
JSON and YAML manipulation with jq and yq command-line tools. Use when user asks to "parse JSON", "transform YAML", "extract from JSON", "filter JSON array", "convert YAML to JSON", "query JSON", or manipulate structured data from command line.
🇯🇵 日本人クリエイター向け解説
JSONやYAML形式のデータをコマンドラインで解析、変換、抽出するなど、構造化されたデータを効率的に操作するSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-17
- 取得日時
- 2026-05-17
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
[Skill 名] jq-yq
jq & yq
コマンドラインでの JSON および YAML 処理です。
jq の基本
値の抽出
# フィールドの取得
echo '{"name":"John","age":30}' | jq '.name'
# "John"
# ネストされたフィールド
echo '{"user":{"name":"John"}}' | jq '.user.name'
# 配列要素
echo '[1,2,3]' | jq '.[0]'
# 1
# 複数のフィールド
echo '{"a":1,"b":2,"c":3}' | jq '{a,b}'
# {"a":1,"b":2}
配列操作
# すべての要素
echo '[1,2,3]' | jq '.[]'
# 配列のフィルタリング
echo '[1,2,3,4,5]' | jq '[.[] | select(. > 2)]'
# [3,4,5]
# マップ
echo '[1,2,3]' | jq '[.[] * 2]'
# [2,4,6]
# 長さ
echo '[1,2,3]' | jq 'length'
# 3
# 最初/最後
echo '[1,2,3]' | jq 'first'
echo '[1,2,3]' | jq 'last'
オブジェクト配列
# 各要素からフィールドを抽出
echo '[{"name":"a"},{"name":"b"}]' | jq '.[].name'
# オブジェクトのフィルタリング
echo '[{"age":20},{"age":30}]' | jq '[.[] | select(.age > 25)]'
# ソート
echo '[{"a":2},{"a":1}]' | jq 'sort_by(.a)'
# グループ化
echo '[{"type":"a"},{"type":"b"},{"type":"a"}]' | jq 'group_by(.type)'
変換
# 新しいオブジェクトの構築
echo '{"first":"John","last":"Doe"}' | jq '{fullName: "\(.first) \(.last)"}'
# フィールドの追加
echo '{"a":1}' | jq '. + {b:2}'
# フィールドの削除
echo '{"a":1,"b":2}' | jq 'del(.b)'
# キーの名前変更
echo '{"old":1}' | jq '{new: .old}'
条件分岐
# If-then-else
echo '{"age":20}' | jq 'if .age >= 18 then "adult" else "minor" end'
# Null 処理
echo '{"a":null}' | jq '.a // "default"'
生出力
# 引用符なし
echo '{"name":"John"}' | jq -r '.name'
# John
# コンパクトな出力
echo '{"a":1}' | jq -c '.'
# {"a":1}
yq の基本
YAML 操作
# 値の読み取り
yq '.name' file.yaml
# 値の更新
yq -i '.version = "2.0"' file.yaml
# フィールドの追加
yq -i '.new_field = "value"' file.yaml
# フィールドの削除
yq -i 'del(.unwanted)' file.yaml
フォーマット変換
# YAML から JSON へ
yq -o=json file.yaml
# JSON から YAML へ
yq -P file.json
# YAML から XML へ
yq -o=xml file.yaml
複数ドキュメント
# ドキュメントの選択
yq 'select(documentIndex == 0)' multi.yaml
# すべてのドキュメントを評価
yq ea '. as $item ireduce ([]; . + [$item])' multi.yaml
一般的なパターン
API レスポンス処理
# API から特定のフィールドを取得
curl -s api.example.com/users | jq '.data[] | {id, name, email}'
# 結果のカウント
curl -s api.example.com/items | jq '.results | length'
# フィルタリングとフォーマット
curl -s api.example.com/posts | jq -r '.[] | "\(.id): \(.title)"'
設定ファイルの操作
# package.json のバージョンを更新
jq '.version = "1.2.3"' package.json > tmp && mv tmp package.json
# スクリプトの追加
jq '.scripts.test = "jest"' package.json | sponge package.json
# 設定のマージ
jq -s '.[0] * .[1]' base.json override.json
Kubernetes/Helm
# Pod 名の取得
kubectl get pods -o json | jq -r '.items[].metadata.name'
# ステータスによるフィルタリング
kubectl get pods -o json | jq '.items[] | select(.status.phase=="Running")'
# YAML マニフェストの更新
yq -i '.spec.replicas = 3' deployment.yaml
リファレンス
高度な jq フィルターとレシピについては、references/recipes.md を参照してください。
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
jq & yq
Command-line JSON and YAML processing.
jq Basics
Extract Values
# Get field
echo '{"name":"John","age":30}' | jq '.name'
# "John"
# Nested field
echo '{"user":{"name":"John"}}' | jq '.user.name'
# Array element
echo '[1,2,3]' | jq '.[0]'
# 1
# Multiple fields
echo '{"a":1,"b":2,"c":3}' | jq '{a,b}'
# {"a":1,"b":2}
Array Operations
# All elements
echo '[1,2,3]' | jq '.[]'
# Filter array
echo '[1,2,3,4,5]' | jq '[.[] | select(. > 2)]'
# [3,4,5]
# Map
echo '[1,2,3]' | jq '[.[] * 2]'
# [2,4,6]
# Length
echo '[1,2,3]' | jq 'length'
# 3
# First/last
echo '[1,2,3]' | jq 'first'
echo '[1,2,3]' | jq 'last'
Object Arrays
# Extract field from each
echo '[{"name":"a"},{"name":"b"}]' | jq '.[].name'
# Filter objects
echo '[{"age":20},{"age":30}]' | jq '[.[] | select(.age > 25)]'
# Sort
echo '[{"a":2},{"a":1}]' | jq 'sort_by(.a)'
# Group
echo '[{"type":"a"},{"type":"b"},{"type":"a"}]' | jq 'group_by(.type)'
Transform
# Build new object
echo '{"first":"John","last":"Doe"}' | jq '{fullName: "\(.first) \(.last)"}'
# Add field
echo '{"a":1}' | jq '. + {b:2}'
# Delete field
echo '{"a":1,"b":2}' | jq 'del(.b)'
# Rename key
echo '{"old":1}' | jq '{new: .old}'
Conditionals
# If-then-else
echo '{"age":20}' | jq 'if .age >= 18 then "adult" else "minor" end'
# Null handling
echo '{"a":null}' | jq '.a // "default"'
Raw Output
# No quotes
echo '{"name":"John"}' | jq -r '.name'
# John
# Compact output
echo '{"a":1}' | jq -c '.'
# {"a":1}
yq Basics
YAML Operations
# Read value
yq '.name' file.yaml
# Update value
yq -i '.version = "2.0"' file.yaml
# Add field
yq -i '.new_field = "value"' file.yaml
# Delete field
yq -i 'del(.unwanted)' file.yaml
Convert Formats
# YAML to JSON
yq -o=json file.yaml
# JSON to YAML
yq -P file.json
# YAML to XML
yq -o=xml file.yaml
Multiple Documents
# Select document
yq 'select(documentIndex == 0)' multi.yaml
# Evaluate all docs
yq ea '. as $item ireduce ([]; . + [$item])' multi.yaml
Common Patterns
API Response Processing
# Get specific fields from API
curl -s api.example.com/users | jq '.data[] | {id, name, email}'
# Count results
curl -s api.example.com/items | jq '.results | length'
# Filter and format
curl -s api.example.com/posts | jq -r '.[] | "\(.id): \(.title)"'
Config File Manipulation
# Update version in package.json
jq '.version = "1.2.3"' package.json > tmp && mv tmp package.json
# Add script
jq '.scripts.test = "jest"' package.json | sponge package.json
# Merge configs
jq -s '.[0] * .[1]' base.json override.json
Kubernetes/Helm
# Get pod names
kubectl get pods -o json | jq -r '.items[].metadata.name'
# Filter by status
kubectl get pods -o json | jq '.items[] | select(.status.phase=="Running")'
# Update YAML manifest
yq -i '.spec.replicas = 3' deployment.yaml
Reference
For advanced jq filters and recipes: references/recipes.md