Communitygithub.com

Compétence Yaak CLI

Contrôle du client API de bureau Yaak depuis le terminal avec l'interface en ligne de commande `yaak`, permettant des interactions CRUD complètes sur les espaces de travail, requêtes, dossiers et environnements.

Qu'est-ce que Compétence Yaak CLI ?

Cette compétence permet à un agent IA (tel que Claude Code, Cursor ou Codex) d'interagir avec le client API de bureau Yaak via son outil en ligne de commande `@yaakapp/cli`. En exploitant la même base de données SQLite locale que l'application de bureau, les modifications effectuées par le CLI sont instantanément répercutées dans les deux sens. L'agent peut ainsi créer, lire, mettre à jour et supprimer des espaces de travail, des dossiers, des requêtes HTTP (avec support des méthodes GET, POST, PUT, PATCH, DELETE), des environnements de variables, et des jarres de cookies. La compétence offre également la possibilité d'exécuter des requêtes, d'utiliser la substitution de variables via les environnements, et de réaliser des opérations par lots (création en masse, suppression, clonage). Des schémas JSON sont disponibles pour comprendre la structure exacte des payloads complexes. L'agent peut aussi gérer l'authentification (login/logout) et les plugins. L'utilisation de `--json` permet de passer des configurations complètes, tandis que les flags `--parallel`, `--fail-fast` et `--verbose` ajoutent de la flexibilité pour les envois. Grâce à la sortie JSON, l'agent peut facilement analyser les résultats avec `jq`.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add AdiPP/skills

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait Compétence Yaak CLI ?

Le CLI yaak (@yaakapp/cli) contrôle le client API de bureau Yaak depuis le terminal. Il lit/écrit la même base de données SQLite locale que l'application de bureau — les modifications sont répercutées instantanément dans les deux sens.

Prérequis

  • CLI yaak installé : npm install -g @yaakapp/cli
  • Application de bureau Yaak (optionnelle mais recommandée pour la vérification visuelle)

Indicateurs globaux

IndicateurObjectif
--data-dir <RÉP>Répertoire de données personnalisé
-e, --environment <ID>ID d'environnement pour la substitution de variables
--cookie-jar <ID>ID de jarre de cookies pour l'exécution des requêtes
-v, --verboseSortie détaillée (événements, corps streamé)
--log [NIVEAU]Journalisation CLI (error

Arborescence des commandes

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 <nom> [<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>                               # requête, dossier ou espace de travail
├── auth        login | logout | whoami
└── plugin      build | dev | generate | install | publish

Règle multi-espace de travail : Lorsqu'un seul espace de travail existe, [<ws-id>] est facultatif. Avec plusieurs espaces de travail, vous DEVEZ passer l'ID de l'espace de travail comme premier argument positionnel.

Espaces de travail

yaak workspace list                                    # lister tous les espaces de travail
yaak workspace show <ws-id>                            # JSON complet
yaak workspace create -n "Mon API"                     # créer par nom
yaak workspace create --json '{"name":"Mon API","headers":[...]}'  # créer avec config
yaak workspace update <ws-id> --json '{"name":"Renommé"}'
yaak workspace delete <ws-id> --yes                    # suppression non interactive

Dossiers

yaak folder list [<ws-id>]                             # lister les dossiers d'un espace de travail
yaak folder show <dossier-id>                         # JSON complet
yaak folder create -n "Auth" [<ws-id>]                # créer dans un espace de travail
yaak folder create --json '{"name":"Auth","workspaceId":"wk_..."}' [<ws-id>]
yaak folder update <dossier-id> --json '{"name":"Renommé"}'
yaak folder delete <dossier-id> --yes

Requêtes

Lister et inspecter

yaak request list [<ws-id>]                            # lister toutes les requêtes
yaak request show <req-id>                             # JSON complet (méthode, url, en-têtes, corps, etc.)

Créer

Indicateurs rapides :

yaak request create [<ws-id>] -n "Obtenir Utilisateurs" -m GET -u "https://api.exemple.com/utilisateurs"

JSON complet :

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

Champs clés pour --json :

ChampTypeRemarques
namestringNom d'affichage
methodstringGET, POST, PUT, PATCH, DELETE
urlstringURL de la requête
folderIdstringID du dossier parent
bodyTypestringapplication/json, multipart/form-data, application/x-www-form-urlencoded, text/plain, etc.
body.textstringContenu du corps (stringifier JSON pour application/json)
headersarray[{name, value, enabled}]
authenticationTypestringbasic, bearer, oauth2, etc.
authenticationobjectConfiguration d'authentification par type

Mettre à jour

yaak request update <req-id> --json '{"name":"Nom mis à jour","url":"https://nouvelle-url.com"}'

Supprimer

yaak request delete <req-id> --yes

Envoyer

yaak send <req-id>                                     # envoyer une seule requête
yaak send <req-id> -v                                  # détaillé (en-têtes, événements)
yaak send <dossier-id>                                 # envoyer toutes les requêtes d'un dossier
yaak send <ws-id> --parallel --fail-fast               # envoyer tout l'espace de travail

Indicateurs d'envoi :

  • --parallel — exécuter les requêtes en parallèle
  • --fail-fast — abandonner à la première erreur (fonctionne avec les envois de dossier/espace de travail)
  • -e <env-id> — utiliser un environnement pour la substitution de variables
  • -v — sortie détaillée (affiche les en-têtes requête/réponse, corps streamé)

Introspection de schéma

yaak request schema http       # Schéma JSON pour les requêtes HTTP
yaak request schema grpc       # Schéma JSON pour les requêtes gRPC
yaak request schema websocket  # Schéma JSON pour les requêtes WebSocket

Utilisez ceci pour comprendre la structure exacte du payload --json pour la création/mise à jour.

Environnements

yaak environment list [<ws-id>]                        # lister les environnements
yaak environment show <env-id>                         # JSON complet avec variables
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

Utiliser les environnements

Passez -e <env-id> à toute commande send pour la substitution de variables :

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

Syntaxe des modèles dans les requêtes :

  • Variables : ${[ ma_variable ]}
  • Fonctions : ${[ uuid() ]}, ${[ timestamp() ]}, ${[ fs.readFile('/chemin') ]}

Authentification

yaak auth whoami                                       # vérifier l'état de connexion
yaak auth login                                        # se connecter via navigateur
yaak auth logout                                       # se déconnecter

Opérations par lots

Créer plusieurs requêtes depuis un script

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

# Points de terminaison d'authentification
yaak request create "$WS" --json '{"name":"Connexion","method":"POST","url":"https://api.exemple.com/auth/connexion","folderId":"'"$FL_AUTH"'","bodyType":"application/json","body":{"text":"{\"username\":\"utilisateur\",\"password\":\"motdepasse\"}"}}'
yaak request create "$WS" --json '{"name":"Moi","method":"GET","url":"https://api.exemple.com/auth/moi","folderId":"'"$FL_AUTH"'"}'

# Points de terminaison CRUD
for op in "GET list /utilisateurs" "POST créer /utilisateurs" "GET obtenir /utilisateurs/1" "PUT mettre à jour /utilisateurs/1" "DELETE supprimer /utilisateurs/1"; do
  read -r method label chemin <<< "$op"
  yaak request create "$WS" --json '{"name":"'"${label^}"' '"${chemin#/}"'","method":"'"$method"'","url":"https://api.exemple.com'"$chemin"'","folderId":"'"$FL_PROD"'"}'
done

Supprimer toutes les requêtes d'un espace de travail

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

Cloner la structure d'un espace de travail vers un nouvel espace de travail

# Créer un nouvel espace de travail
NOUV_WS=$(yaak workspace create -n "Copie" | awk '{print $NF}')

# Créer les dossiers
yaak folder list <ancien-ws> | while read id nom; do
  yaak folder create -n "$nom" "$NOUV_WS"
done

# Puis créer les requêtes avec les nouveaux IDs de dossier

Sortie JSON

Toutes les commandes show et list produisent une sortie JSON (ou une ligne par élément pour list). Dirigez vers jq pour filtrer :

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

Modèles courants

Organiser par ressource

Créez un dossier par ressource API, puis les requêtes CRUD à l'intérieur :

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

yaak request create "$WS" --json '{"name":"Lister Utilisateurs","method":"GET","url":"https://api.exemple.com/utilisateurs","folderId":"'"$FL"'"}'
yaak request create "$WS" --json '{"name":"Obtenir Utilisateur","method":"GET","url":"https://api.exemple.com/utilisateurs/1","folderId":"'"$FL"'"}'
yaak request create "$WS" --json '{"name":"Créer Utilisateur","method":"POST","url":"https://api.exemple.com/utilisateurs","folderId":"'"$FL"'","bodyType":"application/json","body":{"text":"{\"name\":\"nouvel utilisateur\"}"}}'

Changement d'URL basé sur l'environnement

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

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

# Utiliser dans l'URL de la requête
yaak request create "$WS" --json '{"name":"Obtenir Utilisateurs","method":"GET","url":"${[ BASE_URL ]}/utilisateurs","folderId":"..."}'

# Envoyer avec l'environnement
yaak send <req-id> -e <dev-env-id>    # atteint localhost
yaak send <req-id> -e <prod-env-id>   # atteint la production

Valeurs par défaut au niveau de l'espace de travail

Définissez des en-têtes/authentification au niveau de l'espace de travail (hérités par toutes les requêtes) :

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

Astuces

  • Utilisez toujours yaak request schema <type> avant de créer des payloads complexes — le schéma montre les noms et types de champs exacts.
  • Utilisez --verbose avec send pour déboguer les détails requête/réponse.
  • Le CLI est idempotent pour les lectures — sans danger pour les scripts et les ré-exécutions.
  • L'application de bureau reflète instantanément les modifications du CLI (BDD SQLite partagée).
  • --yes ignore les invites de confirmation — essentiel pour les suppressions scriptées.

Skills associés