jpskill.com
📦 その他 コミュニティ

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本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o jq-yq.zip https://jpskill.com/download/6097.zip && unzip -o jq-yq.zip && rm jq-yq.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/6097.zip -OutFile "$d\jq-yq.zip"; Expand-Archive "$d\jq-yq.zip" -DestinationPath $d -Force; ri "$d\jq-yq.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して jq-yq.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → jq-yq フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

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