Communitygithub.com

Yaak CLI 스킬

Yaak 데스크톱 API 클라이언트를 터미널에서 제어할 수 있는 CLI 도구로, 로컬 SQLite 데이터베이스를 읽고 씁니다.

Yaak CLI 스킬란 무엇인가요?

이 스킬은 `@yaakapp/cli` 패키지를 통해 설치 가능한 Yaak CLI 도구를 제어합니다. 사용자는 터미널에서 Yaak 데스크톱 앱과 동일한 로컬 SQLite 데이터베이스에 접근하여 작업 공간, 폴더, 요청, 환경 설정 등을 생성, 조회, 수정, 삭제할 수 있으며 변경 사항이 즉시 양방향으로 반영됩니다. CLI는 `workspace`, `request`, `folder`, `environment`, `cookie-jar`, `send`, `auth`, `plugin` 등 다양한 하위 명령어를 지원하며, JSON 페이로드를 통한 상세 설정과 플래그 기반 빠른 생성 방식을 모두 제공합니다. 다중 작업 공간이 존재할 때는 작업 공간 ID를 명시적으로 전달해야 하며, `--parallel`과 `--fail-fast` 같은 고급 전송 옵션을 지원합니다. 이 스킬은 Yaak을 사용하는 개발자, QA 엔지니어, CI/CD 파이프라인에서 API 테스트 자동화가 필요한 모든 사용자에게 유용하며, Cursor와 같은 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>요청 실행을 위한 쿠키 저장소 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

다중 워크스페이스 규칙: 워크스페이스가 하나만 있으면 [<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 의 주요 필드:

필드유형참고
name문자열표시 이름
method문자열GET, POST, PUT, PATCH, DELETE
url문자열요청 URL
folderId문자열상위 폴더 ID
bodyType문자열application/json, multipart/form-data, application/x-www-form-urlencoded, text/plain 등
body.text문자열본문 콘텐츠 (application/json의 경우 JSON을 문자열화)
headers배열[{name, value, enabled}]
authenticationType문자열basic, bearer, oauth2 등
authentication객체유형별 인증 설정

업데이트

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 스키마

이를 사용하여 create/update에 대한 정확한 --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의 경우 항목당 한 줄). 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 전환

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

# 프로덕션 환경
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는 확인 프롬프트를 건너뜁니다 — 스크립트된 삭제에 필수적입니다.

관련 스킬