Communitygithub.com

AdiPP/skills

Wiederverwendbare KI-Agenten-Fähigkeiten im SKILL.md-Format

Was ist skills?

Diese Fähigkeit beschreibt die Nutzung der `yaak` CLI (`@yaakapp/cli`), um den Yaak Desktop-API-Client direkt vom Terminal aus zu steuern. Sie ermöglicht das Lesen und Schreiben derselben lokalen SQLite-Datenbank, die auch die Desktop-App verwendet, sodass Änderungen sofort in beide Richtungen sichtbar sind. Die Fähigkeit unterstützt eine Vielzahl von Plattformen, darunter alle gängigen Betriebssysteme, und bietet eine umfassende Befehlsstruktur zur Verwaltung von Workspaces, Ordnern, Requests, Umgebungen und Authentifizierung. Entwickler können mit diesem Skill API-Workflows vollständig automatisieren, Requests erstellen und senden sowie Umgebungsvariablen und Authentifizierungsmechanismen konfigurieren – alles über die Kommandozeile.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add AdiPP/skills

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Yaak CLI Skill

Die yaak CLI (@yaakapp/cli) steuert den Yaak Desktop-API-Client vom Terminal aus. Sie liest und schreibt dieselbe lokale SQLite-Datenbank wie die Desktop-App – Änderungen werden sofort in beide Richtungen übernommen.

Voraussetzungen

  • yaak CLI installiert: npm install -g @yaakapp/cli
  • Yaak Desktop-App (optional, aber für visuelle Überprüfung empfohlen)

Globale Flags

FlagZweck
--data-dir <DIR>Benutzerdefiniertes Datenverzeichnis
-e, --environment <ID>Umgebungs-ID für Variablenersetzung
--cookie-jar <ID>Cookie-Jar-ID für die Ausführung von Requests
-v, --verboseAusführliche Ausgabe (Ereignisse, gestreamter Body)
--log [LEVEL]CLI-Protokollierung (error|warn|info|debug|trace)

Befehlsbaum

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>                               # request, folder, oder workspace
├── auth        login | logout | whoami
└── plugin      build | dev | generate | install | publish

Multi-Workspace-Regel: Wenn nur ein Workspace existiert, ist [<ws-id>] optional. Bei mehreren Workspaces MUSS die Workspace-ID als erstes positionsabhängiges Argument übergeben werden.

Workspaces

yaak workspace list                                    # Alle Workspaces auflisten
yaak workspace show <ws-id>                            # Vollständiges JSON
yaak workspace create -n "Meine API"                   # Nach Namen erstellen
yaak workspace create --json '{"name":"Meine API","headers":[...]}'  # Mit Konfiguration erstellen
yaak workspace update <ws-id> --json '{"name":"Umbenannt"}'
yaak workspace delete <ws-id> --yes                    # Nicht-interaktives Löschen

Ordner

yaak folder list [<ws-id>]                             # Ordner im Workspace auflisten
yaak folder show <folder-id>                           # Vollständiges JSON
yaak folder create -n "Auth" [<ws-id>]                 # Im Workspace erstellen
yaak folder create --json '{"name":"Auth","workspaceId":"wk_..."}' [<ws-id>]
yaak folder update <folder-id> --json '{"name":"Umbenannt"}'
yaak folder delete <folder-id> --yes

Requests

Auflisten & Inspizieren

yaak request list [<ws-id>]                            # Alle Requests auflisten
yaak request show <req-id>                             # Vollständiges JSON (Methode, URL, Header, Body usw.)

Erstellen

Kurze Flags:

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

Vollständiges JSON:

yaak request create [<ws-id>] --json '{
  "name": "Benutzer erstellen",
  "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}
  ]
}'

Wichtige Felder für --json:

FeldTypHinweise
namestringAnzeigename
methodstringGET, POST, PUT, PATCH, DELETE
urlstringRequest-URL
folderIdstringID des übergeordneten Ordners
bodyTypestringapplication/json, multipart/form-data, application/x-www-form-urlencoded, text/plain usw.
body.textstringBody-Inhalt (JSON für application/json stringifizieren)
headersarray[{name, value, enabled}]
authenticationTypestringbasic, bearer, oauth2 usw.
authenticationobjectAuth-Konfiguration pro Typ

Aktualisieren

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

Löschen

yaak request delete <req-id> --yes

Senden

yaak send <req-id>                                     # Einen einzelnen Request senden
yaak send <req-id> -v                                  # Ausführlich (Header, Ereignisse)
yaak send <folder-id>                                  # Alle Requests im Ordner senden
yaak send <ws-id> --parallel --fail-fast               # Gesamten Workspace senden

Send-Flags:

  • --parallel — Requests parallel ausführen
  • --fail-fast — Bei erstem Fehler abbrechen (funktioniert mit Ordner-/Workspace-Sendungen)
  • -e <env-id> — Umgebung für Variablenersetzung verwenden
  • -v — Ausführliche Ausgabe (zeigt Request-/Response-Header, gestreamten Body)

Schema-Introspection

yaak request schema http       # JSON-Schema für HTTP-Requests
yaak request schema grpc       # JSON-Schema für gRPC-Requests
yaak request schema websocket  # JSON-Schema für WebSocket-Requests

Verwenden Sie dies, um die genaue --json-Payload-Struktur für create/update zu verstehen.

Umgebungen

yaak environment list [<ws-id>]                        # Umgebungen auflisten
yaak environment show <env-id>                         # Vollständiges JSON mit Variablen
yaak environment create [<ws-id>] -n "Produktion"
yaak environment update <env-id> --json '{
  "name": "Produktion",
  "variables": [
    {"name":"BASE_URL","value":"https://api.prod.com"},
    {"name":"API_KEY","value":"secret123"}
  ]
}'
yaak environment delete <env-id> --yes

Umgebungen verwenden

Übergeben Sie -e <env-id> an jeden send-Befehl für die Variablenersetzung:

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

Vorlagensyntax in Requests:

  • Variablen: ${[ my_var ]}
  • Funktionen: ${[ uuid() ]}, ${[ timestamp() ]}, ${[ fs.readFile('/pfad') ]}

Auth

yaak auth whoami                                       # Anmeldestatus prüfen
yaak auth login                                        # Über Browser anmelden
yaak auth logout                                       # Abmelden

Batch-Operationen

Mehrere Requests aus einem Skript erstellen

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

# Auth-Endpunkte
yaak request create "$WS" --json '{"name":"Anmelden","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":"Ich","method":"GET","url":"https://api.example.com/auth/me","folderId":"'"$FL_AUTH"'"}'

# CRUD-Endpunkte
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

Alle Requests in einem Workspace löschen

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

Workspace-Struktur in neuen Workspace klonen

# Neuen Workspace erstellen
NEW_WS=$(yaak workspace create -n "Kopie" | awk '{print $NF}')

# Ordner erstellen
yaak folder list <alter-ws> | while read id name; do
  yaak folder create -n "$name" "$NEW_WS"
done

# Dann Requests mit neuen Ordner-IDs erstellen

JSON-Ausgabe

Alle show- und list-Befehle geben JSON aus (oder eine Zeile pro Element bei list). Zur Filterung an jq weiterleiten:

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

Häufige Muster

Nach Ressource organisieren

Erstellen Sie einen Ordner pro API-Ressource und darin CRUD-Requests:

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

yaak request create "$WS" --json '{"name":"Benutzer auflisten","method":"GET","url":"https://api.example.com/users","folderId":"'"$FL"'"}'
yaak request create "$WS" --json '{"name":"Benutzer abrufen","method":"GET","url":"https://api.example.com/users/1","folderId":"'"$FL"'"}'
yaak request create "$WS" --json '{"name":"Benutzer erstellen","method":"POST","url":"https://api.example.com/users","folderId":"'"$FL"'","bodyType":"application/json","body":{"text":"{\"name\":\"neuer Benutzer\"}"}}'

Umgebungsbasiertes URL-Switching

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

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

# In Request-URL verwenden
yaak request create "$WS" --json '{"name":"Benutzer abrufen","method":"GET","url":"${[ BASE_URL ]}/users","folderId":"..."}'

# Mit Umgebung senden
yaak send <req-id> -e <dev-env-id>    # Trifft localhost
yaak send <req-id> -e <prod-env-id>   # Trifft Produktion

Workspace-weite Standardwerte

Setzen Sie Header/Auth auf Workspace-Ebene (von allen Requests geerbt):

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 ]}"}
}'

Tipps

  • Verwenden Sie immer yaak request schema <type>, bevor Sie komplexe Payloads erstellen – das Schema zeigt die genauen Feldnamen und -typen.
  • Nutzen Sie --verbose bei send, um Request-/Response-Details zu debuggen.
  • Die CLI ist für Lesevorgänge idempotent – sicher für Skripte und wiederholte Ausführung.
  • Die Desktop-App spiegelt CLI-Änderungen sofort wider (gemeinsame SQLite-Datenbank).
  • --yes überspringt Bestätigungsaufforderungen – unerlässlich für skriptgesteuerte Löschungen.

Verwandte Skills