Communitygithub.com

Yaak CLIスキル

`yaak` CLIを使用して、YaakデスクトップAPIクライアントをターミナルから制御するための再利用可能なAIエージェントスキルです。

Yaak CLIスキル とは?

このスキルは、Yaak APIクライアントをCLIから操作するための`@yaakapp/cli`(yaakコマンド)をAIエージェントに提供します。ワークスペース、フォルダ、リクエスト、環境変数、Cookie Jar、認証、プラグインなど、Yaakのすべての機能をCLIから操作・管理できるようになります。特筆すべきは、Yaak CLIがデスクトップアプリと同じローカルのSQLiteデータベースを読み書きするため、両者間で変更が即座に双方向反映される点です。このスキルは、`SKILL.md`形式で記述されており、Claude Code、Cursor、CodexなどのAIエージェントツールと互換性があります。開発者は、リクエストの作成・送信・更新・削除、環境変数の管理、バッチ処理、ワークスペース全体の並列実行などを、自然言語の指示でスクリプト化・自動化できるようになります。

対応✓Claude Code~Codex CLI~Cursor
npx skills add AdiPP/skills

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Yaak CLIスキル は何をしますか?

yaak CLI(@yaakapp/cli)は、YaakデスクトップAPIクライアントをターミナルから制御します。デスクトップアプリと同じローカルのSQLiteデータベースを読み書きするため、両方向で変更が即座に反映されます。

前提条件

  • yaak CLIのインストール:npm install -g @yaakapp/cli
  • Yaakデスクトップアプリ(推奨、視覚的な確認用)

グローバルフラグ

フラグ目的
--data-dir <DIR>カスタムデータディレクトリ
-e, --environment <ID>変数置換用の環境ID
--cookie-jar <ID>リクエスト実行用のCookie Jar ID
-v, --verbose詳細出力(イベント、ストリーム本文)
--log [LEVEL]CLIログレベル(error|warn|info|debug|trace)

コマンドツリー

yaak
├── workspace   list | show <id> | create | update <id> | delete <id> [--yes]
├── request     list [<ws-id>] | show <id> | create [<ws-id>] | update <id> | delete <id> [--yes] | send <id> | schema <type>
├── folder      list [<ws-id>] | show <id> | create -n <name> [<ws-id>] | update <id> | delete <id> [--yes]
├── environment list [<ws-id>] | show <id> | create | update <id> | delete <id> [--yes]
├── cookie-jar  list [<ws-id>]
├── send        <ID>                               # リクエスト、フォルダ、ワークスペース
├── auth        login | logout | whoami
└── plugin      build | dev | generate | install | publish

マルチワークスペースルール: ワークスペースが1つだけ存在する場合、[<ws-id>]は省略可能です。複数のワークスペースがある場合、最初の位置引数としてワークスペースIDを必ず渡す必要があります。

ワークスペース

yaak workspace list                                    # 全ワークスペースを一覧表示
yaak workspace show <ws-id>                            # 完全なJSONを表示
yaak workspace create -n "My API"                      # 名前で作成
yaak workspace create --json '{"name":"My API","headers":[...]}'  # 設定付きで作成
yaak workspace update <ws-id> --json '{"name":"Renamed"}'
yaak workspace delete <ws-id> --yes                    # 非対話的に削除

フォルダ

yaak folder list [<ws-id>]                             # ワークスペース内のフォルダを一覧表示
yaak folder show <folder-id>                           # 完全なJSONを表示
yaak folder create -n "Auth" [<ws-id>]                 # ワークスペースに作成
yaak folder create --json '{"name":"Auth","workspaceId":"wk_..."}' [<ws-id>]
yaak folder update <folder-id> --json '{"name":"Renamed"}'
yaak folder delete <folder-id> --yes

リクエスト

一覧表示と詳細表示

yaak request list [<ws-id>]                            # 全リクエストを一覧表示
yaak request show <req-id>                             # 完全なJSON(メソッド、URL、ヘッダー、本文など)

作成

簡易フラグ:

yaak request create [<ws-id>] -n "Get Users" -m GET -u "https://api.example.com/users"

完全なJSON:

yaak request create [<ws-id>] --json '{
  "name": "Create User",
  "method": "POST",
  "url": "https://api.example.com/users",
  "folderId": "fl_...",
  "bodyType": "application/json",
  "body": {
    "text": "{\"name\":\"test\",\"email\":\"[email protected]\"}"
  },
  "headers": [
    {"name":"Authorization","value":"Bearer token","enabled":true}
  ]
}'

--json の主要フィールド:

フィールド型備考
namestring表示名
methodstringGET, POST, PUT, PATCH, DELETE
urlstringリクエストURL
folderIdstring親フォルダID
bodyTypestringapplication/json, multipart/form-data, application/x-www-form-urlencoded, text/plain など
body.textstring本文コンテンツ(application/jsonの場合はJSONを文字列化)
headersarray[{name, value, enabled}]
authenticationTypestringbasic, bearer, oauth2 など
authenticationobjectタイプごとの認証設定

更新

yaak request update <req-id> --json '{"name":"Updated Name","url":"https://new-url.com"}'

削除

yaak request delete <req-id> --yes

送信

yaak send <req-id>                                     # 単一リクエストを送信
yaak send <req-id> -v                                  # 詳細表示(ヘッダー、イベント)
yaak send <folder-id>                                  # フォルダ内の全リクエストを送信
yaak send <ws-id> --parallel --fail-fast               # ワークスペース全体を送信

送信フラグ:

  • --parallel — リクエストを同時実行
  • --fail-fast — 最初の失敗で中止(フォルダ/ワークスペース送信時)
  • -e <env-id> — 環境変数置換を使用
  • -v — 詳細出力(リクエスト/レスポンスのヘッダー、ストリーム本文を表示)

スキーマイントロスペクション

yaak request schema http       # HTTPリクエストのJSONスキーマ
yaak request schema grpc       # gRPCリクエストのJSONスキーマ
yaak request schema websocket  # WebSocketリクエストのJSONスキーマ

これを使用して、作成/更新時の正確な--jsonペイロード構造を理解します。

環境

yaak environment list [<ws-id>]                        # 環境を一覧表示
yaak environment show <env-id>                         # 変数を含む完全なJSON
yaak environment create [<ws-id>] -n "Production"
yaak environment update <env-id> --json '{
  "name": "Production",
  "variables": [
    {"name":"BASE_URL","value":"https://api.prod.com"},
    {"name":"API_KEY","value":"secret123"}
  ]
}'
yaak environment delete <env-id> --yes

環境の使用

変数置換のために、任意のsendコマンドに-e <env-id>を渡します:

yaak send <req-id> -e <env-id>

リクエスト内のテンプレート構文:

  • 変数:${[ my_var ]}
  • 関数:${[ uuid() ]},${[ timestamp() ]},${[ fs.readFile('/path') ]}

認証

yaak auth whoami                                       # ログイン状態を確認
yaak auth login                                        # ブラウザでログイン
yaak auth logout                                       # サインアウト

バッチ操作

スクリプトから複数のリクエストを作成

#!/bin/bash
WS="wk_..."
FL_AUTH="fl_..."
FL_PROD="fl_..."

# 認証エンドポイント
yaak request create "$WS" --json '{"name":"Login","method":"POST","url":"https://api.example.com/auth/login","folderId":"'"$FL_AUTH"'","bodyType":"application/json","body":{"text":"{\"username\":\"user\",\"password\":\"pass\"}"}}'
yaak request create "$WS" --json '{"name":"Me","method":"GET","url":"https://api.example.com/auth/me","folderId":"'"$FL_AUTH"'"}'

# CRUDエンドポイント
for op in "GET list /users" "POST create /users" "GET get /users/1" "PUT update /users/1" "DELETE delete /users/1"; do
  read -r method label path <<< "$op"
  yaak request create "$WS" --json '{"name":"'"${label^}"' '"${path#/}"'","method":"'"$method"'","url":"https://api.example.com'"$path"'","folderId":"'"$FL_PROD"'"}'
done

ワークスペース内の全リクエストを削除

yaak request list <ws-id> | awk '{print $1}' | while read id; do
  yaak request delete "$id" --yes
done

新しいワークスペースにワークスペース構造をクローン

# 新しいワークスペースを作成
NEW_WS=$(yaak workspace create -n "Copy" | awk '{print $NF}')

# フォルダを作成
yaak folder list <old-ws> | while read id name; do
  yaak folder create -n "$name" "$NEW_WS"
done

# 新しいフォルダIDでリクエストを作成

JSON出力

すべてのshowおよびlistコマンドはJSONを出力します(listの場合は1行1アイテム)。jqにパイプしてフィルタリング:

yaak request show <req-id> | jq '.url'
yaak workspace list | jq -r '.[] | .id + " " + .name'

一般的なパターン

リソースごとに整理

APIリソースごとにフォルダを作成し、その中にCRUDリクエストを配置:

WS="wk_..."
FL=$(yaak folder create -n "Users" "$WS" | awk '{print $NF}')

yaak request create "$WS" --json '{"name":"List Users","method":"GET","url":"https://api.example.com/users","folderId":"'"$FL"'"}'
yaak request create "$WS" --json '{"name":"Get User","method":"GET","url":"https://api.example.com/users/1","folderId":"'"$FL"'"}'
yaak request create "$WS" --json '{"name":"Create User","method":"POST","url":"https://api.example.com/users","folderId":"'"$FL"'","bodyType":"application/json","body":{"text":"{\"name\":\"new user\"}"}}'

環境ベースのURL切り替え

# Dev環境
yaak environment create "$WS" -n "Dev"
yaak environment update <dev-env-id> --json '{"variables":[{"name":"BASE_URL","value":"http://localhost:3000"}]}'

# Prod環境
yaak environment create "$WS" -n "Prod"
yaak environment update <prod-env-id> --json '{"variables":[{"name":"BASE_URL","value":"https://api.production.com"}]}'

# リクエストURLで使用
yaak request create "$WS" --json '{"name":"Get Users","method":"GET","url":"${[ BASE_URL ]}/users","folderId":"..."}'

# 環境を指定して送信
yaak send <req-id> -e <dev-env-id>    # localhostにアクセス
yaak send <req-id> -e <prod-env-id>   # 本番にアクセス

ワークスペースレベルのデフォルト

ワークスペースレベルでヘッダー/認証を設定(全リクエストに継承):

yaak workspace update "$WS" --json '{
  "headers": [
    {"name":"Content-Type","value":"application/json","enabled":true},
    {"name":"Accept","value":"application/json","enabled":true}
  ],
  "authenticationType": "bearer",
  "authentication": {"token":"${[ API_TOKEN ]}"}
}'

ヒント

  • 複雑なペイロードを作成する前に、必ずyaak request schema <type>を実行してください。スキーマは正確なフィールド名と型を表示します。
  • send時に--verboseを使用して、リクエスト/レスポンスの詳細をデバッグします。
  • CLIは読み取りに関して冪等です。スクリプト化して再実行しても安全です。
  • デスクトップアプリはCLIの変更を即座に反映します(共有SQLite DB)。
  • --yesは確認プロンプトをスキップします。スクリプト化された削除に必須です。

関連スキル