clerk-cli

Par clerk · skills

Opère le CLI Clerk (binaire `clerk`) pour l'authentification, la gestion des utilisateurs/organisations/sessions, l'usurpation d'identité, les tests de webhooks en local, la vérification des déploiements, la configuration des instances, les clés d'environnement, les feature toggles, et tout appel aux API Clerk Backend, Platform ou Frontend. À utiliser lorsque l'utilisateur mentionne des tâches de gestion Clerk, « lister les utilisateurs Clerk », « usurper l'identité d'un utilisateur », « tester les webhooks en local », « activer les organisations », « activer la facturation », `clerk env pull`, `clerk doctor`, `clerk deploy`, `clerk api`, ou toute requête API Clerk ad hoc. Préférer le CLI aux requêtes HTTP brutes : il gère automatiquement l'authentification, la résolution des clés, le ciblage des applications/instances et le formatage.

npx skills add https://github.com/clerk/skills --skill clerk-cli

Clerk CLI

Le binaire clerk est une passerelle pré-authentifiée vers les APIs Backend et Platform de Clerk, ainsi que des outils au niveau du projet (auth, linking, env pulls, instance config). Quand l'utilisateur demande quelque chose qui touche une ressource Clerk, utilisez clerk en priorité au lieu de rouler des curl manuels.

Pour les requêtes setup ou init, utilisez la skill clerk-setup comme source de vérité. Son package-runner, approche accountless, guidance migration et init-first prennent la priorité sur les prérequis opérationnels généraux ci-dessous.

Cette skill cible clerk latest. Si clerk --version diffère de la dernière version CLI disponible, rafraîchissez-la avec clerk update, ou invoquez la dernière via un package runner tel que bunx clerk@latest. Le binaire est toujours la source de vérité, donc lancez clerk <command> --help pour vérifier tout ce que cette skill affirme.

Environnement d'exécution (préférer l'hôte, comprendre l'avertissement sandbox)

La plupart des agents de codage IA exécutent par défaut les commandes shell dans un sandbox où le répertoire home de l'utilisateur, le keychain OS, le lancement du navigateur, la liaison du callback localhost, ou l'accès réseau peuvent être bloqués. Le CLI Clerk dépend de toutes ces capacités hôte :

  • Magasin d'identifiants OS : clerk auth login stocke le token OAuth dans le keychain système. Un sandbox sans accès keychain rapporte « not logged in » même quand l'hôte est authentifié.
  • État Clerk du répertoire home : config sauvegardée, métadonnées en cache, et identifiants fallback vivent sous les répertoires config/data Clerk de l'utilisateur.
  • Métadonnées du projet linked : résolues à partir du remote git du repo plus config Clerk. Les sandboxes avec état repo strippé ou lectures home-dir bloquées peuvent mal rapporter « not linked ».
  • *Fichiers locaux `.env** : clés publishes et secret matérialisées parclerk env pull`.
  • Accès réseau sortant vers Clerk : chaque appel Backend et Platform API.
  • Navigateur + callback OAuth localhost : clerk auth login a besoin des deux.

En mode agent, le CLI fait maintenant un contrôle best-effort warn-once aux limites de la bibliothèque sensibles à l'hôte. Quand il détecte que l'état Clerk côté hôte ou les capacités système ne sont pas disponibles, il émet :

Host-only Clerk state or system capabilities may be unavailable in agent mode. This may be a sandboxed run.
Re-run this command on the host shell before trusting auth, link, env, or API failures.

Traitez cet avertissement comme faisant autorité. La commande peut continuer, mais tout échec auth, link, env, config, API, navigateur, ou callback OAuth de cette invocation est non fiable jusqu'à ce que vous relancez la même commande sur l'hôte.

Préférez ces commandes sur le shell hôte de l'utilisateur, pas dans un sandbox :

clerk doctor, clerk whoami, clerk auth login, clerk link, clerk env pull, clerk apps ..., clerk config ..., clerk api ....

Si une commande a été lancée accidentellement dans un sandbox et rapporte Not logged in, auth_required, not linked, env manquant, erreurs keychain/file permission, ou network failures, ne traitez pas le résultat comme faisant autorité. Relancez-la sur l'hôte avant d'agir dessus ou de la rapporter à l'utilisateur.

Invoquer le CLI

Avant de lancer une commande clerk, déterminez quel binaire invoquer et liez ce choix pour le reste de la session :

# 1. Préférez un binaire globalement installé quand il correspond à la version cible de la skill.
command -v clerk >/dev/null 2>&1 && clerk --version

Si cela imprime latest ou toute version de confiance, utilisez bare clerk pour le reste de la session.

Sinon, revenez à un package runner, dans cet ordre (correspond à la logique preferredRunner du CLI lui-même, qui préfère le runner qui correspond au lockfile du projet) :

Gestionnaire de packages du projet Invocation
bun (bun.lock*) bunx clerk@latest
npm (package-lock.json) npx -y clerk@latest
pnpm (pnpm-lock.yaml) pnpm dlx clerk@latest
yarn >= 2 (yarn.lock) yarn dlx clerk@latest

Yarn Classic (v1) n'a pas de dlx ; traitez ces projets comme « no preferred runner » et revenez au premier runner de la liste ci-dessus qui est sur PATH.

Le paquet npm publié est clerk, pas @clerk/cli. N'enseignez jamais npm install -g clerk comme chemin principal. Si le CLI global est périmé ou se comporte différemment de cette skill, mettez à jour l'installation globale ou revenez à la forme latest runner ci-dessus.

Prérequis (lancer au démarrage de la session pour les opérations non-setup)

Sauf si vous suivez clerk-setup, vérifiez que le CLI est authentifié, lié, et en bonne santé avant de lancer d'autres commandes Clerk dans une session :

clerk --version               # confirmer que le binaire est sur PATH
clerk doctor --json           # vérification de santé structurée ; exit 1 si quelque chose a échoué

Lancez toujours clerk doctor --json en premier. Cela attrape les échecs setup courants (not logged in, project not linked, missing keys, stale CLI version) d'avance, donc les commandes ultérieures ne échouent pas avec des erreurs confuses. En mode agent, cela inclut aussi une vérification Host execution qui avertit quand les répertoires Clerk côté hôte / credential ne sont pas inscriptibles, ce qui est le signal canonique que l'invocation courante est probablement sandboxée.

Chaque résultat a name, status (pass/warn/fail), message, optionnel detail, optionnel remedy (comment le corriger), et optionnel fix (label pour les problèmes auto-fixables). Analysez cela et agissez en conséquence, ou exposez-le à l'utilisateur. Si Host execution avertit, relancez la commande sur l'hôte avant de faire confiance à tout échec auth/link/env/API de la même exécution sandboxée. Relancez clerk doctor --json chaque fois qu'une commande ultérieure commence à mal se comporter.

Si clerk --version rapporte un CLI plus récent que ce que couvre cette skill, faites confiance à clerk <command> --help en priorité et rafraîchissez ce bundle skill à partir de sa source. L'inverse s'applique aussi : --accountless et les clés JSON accountless arrivent en CLI 3.3+ — sur un CLI plus ancien, utilisez l'alias --keyless ou faites une mise à jour.

Configuration accountless

clerk init ne requiert pas clerk auth login : sur un framework avec support accountless, un bootstrap non-authentifié sans --app, ou une exécution agent non-authentifiée sans --app ou lien projet existant, crée une app accountless non-revendiquée avec clés de développement temporaires — pas de compte, pas de navigateur, pas de drapeau. (Un humain signed-out qui le relance dans un projet existant obtient le flux login à la place — --accountless force le chemin clés-temporaires.) La plupart des commandes instance fonctionnent alors sur cette clé seule.

Deux choses à savoir avant de l'utiliser : le chemin accountless suit quelle que soit la clé sk_ locale — sk_live_ incluse, revendiquée ou non — donc passez --app <id> quand vous voulez une vrai app ; et clerk open retourne une URL de revendication équivalente aux identifiants, jamais sûre de coller dans un log ou PR.

Quelles commandes ont besoin d'un compte, et les règles complètes : auth.md.

Le modèle mental

Couche Ce qu'elle fait Commandes
Session / projet Auth, lier un repo à une app Clerk, tirer les clés env auth login, link, unlink, whoami, env pull, doctor
Instance config Gérer la configuration (social providers, session lifetimes, etc.) pour une instance spécifique config pull, config schema, config patch, config put
Backend API (défaut) Données runtime : users, orgs, sessions, invitations, JWT templates, webhooks clerk api <path>
Platform API (--platform) Au niveau du compte : applications, instances, billing clerk api --platform <path>
Frontend API (--fapi) L'API publique client-facing de l'instance (ce que clerk-js appelle) clerk api --fapi <path>

Un projet est « linked » à une application via clerk link. Une fois lié, la plupart des commandes résolvent automatiquement l'app cible et l'instance dev à partir du remote git du repo. Pour cibler quelque chose d'autre, passez --app <id> et/ou --instance dev|prod|<instance_id>. Voir references/auth.md pour l'ordre de résolution complet.

Découvrez les endpoints — ne les mémorisez pas

Le CLI livre le catalogue OpenAPI de Clerk. Découvrez toujours les endpoints dynamiquement au lieu de deviner les chemins :

clerk api ls                  # lister chaque endpoint Backend API
clerk api ls users            # filtrer par mot-clé (correspond path, summary, tag, operationId)
clerk api ls --platform apps  # lister les endpoints Platform API

Utilisez ceci avant clerk api <path>. Si vous ne voyez pas l'endpoint attendu, il n'est probablement pas exposé.

La commande clerk api (la bête de somme)

clerk api fait des appels HTTP authentifiés. Elle auto-résout les clés, auto-détecte la méthode à partir de la présence du corps, supporte stdin, et peut prévisualiser les mutations avec --dry-run.

# Requêtes GET
clerk api /users                                  # lister les users
clerk api /users/user_abc123                      # récupérer un
clerk api /users?limit=5&order_by=-created_at     # les paramètres de query fonctionnent inline

# Requêtes mutantes
clerk api /users -d '{"email_address":["a@b.co"]}'          # POST (auto-détecté du corps)
clerk api /users/user_abc123 -X PATCH -d '{"first_name":"A"}'
clerk api /users/user_abc123 -X DELETE

# Corps de fichier ou stdin
clerk api /users --file payload.json
cat payload.json | clerk api /users

# Toujours prévisualiser les mutations d'abord
clerk api /users/user_abc123 -X DELETE --dry-run
clerk api /users/user_abc123 -X DELETE --yes      # passer confirmation une fois que vous avez vérifié

# Cibler une app/instance spécifique
clerk api /users --app app_abc123 --instance prod

# Inclure les headers de réponse quand on débugge
clerk api /users --include

# Platform API (au niveau du compte, pas tenant data)
clerk api /v1/platform/applications --platform

# Frontend API (l'API publique client-facing de l'instance — ce que clerk-js appelle.
# Non-authentifiée ; --fapi et --platform ne peuvent pas être combinés, --secret-key est ignoré)
clerk api --fapi /environment

En mode humain, clerk api sans arguments ouvre un constructeur de requête interactif ; en mode agent, il imprime une guidance d'usage et exit 0 — toujours passer un endpoint (ou ls) explicitement à partir de scripts.

Pour la config instance, préférez les commandes dédiées clerk config ... au-dessus des chemins raw Platform API /config. Elles gèrent le dry-run, le diffing, et la confirmation plus proprement que la forme raw endpoint.

Toujours --dry-run une mutation avant de la lancer pour de vrai. Puis relancez sans --dry-run (ajoutez --yes si vous êtes sûr). En mode agent, la confirmation interactive est contournée, donc --dry-run est le seul filet de sécurité pour les appels destructeurs.

Les corps JSON doivent être du JSON valide. Le CLI valide et rejette les payloads malformées.

Les chemins d'endpoint peuvent être donnés avec ou sans préfixe /v1/ - les deux fonctionnent pour les appels Backend API. Le CLI normalise.

Voir references/recipes.md pour les patterns concrets : lister/filtrer les users, créer des orgs, sessions d'impersonation, etc.

Inspecter les grands outputs (ne pas inonder votre contexte)

users list, apps list, config pull, et la plupart des GETs clerk api retournent des payloads qui peuvent faire plusieurs kilobytes ou megabytes. Les tenants production ont couramment des milliers de users ; une config instance peut être des centaines de champs de profondeur. Lire ces réponses dans la conversation coûte du context window pour aucun bénéfice. Sauvegardez la réponse dans un fichier d'abord, puis interrogez juste ce dont vous avez besoin avec jq :

# 1. Persister la réponse. Utilisez --limit 250 pour maximiser la taille de page pour users list.
clerk users list --json --limit 250 > /tmp/users.json
clerk apps list --json                > /tmp/apps.json
clerk api /users/user_abc123          > /tmp/user.json

# 2. Inspecter seulement ce dont vous avez besoin.
jq '.data | length'                       /tmp/users.json   # taille de la page courante
jq '.hasMore'                             /tmp/users.json   # y a-t-il plus de pages disponibles ?
jq '.data[0] | keys'                      /tmp/users.json   # découvrir la shape user une fois
jq '.data[] | {id, email_addresses}'      /tmp/users.json   # projeter vers quelques champs
jq '[.data[] | select(.banned)] | length' /tmp/users.json   # agréger sans lire les lignes

Si jq n'est pas disponible, revenez à Python ou Node - les deux peuvent streamer le fichier sans l'imprimer entièrement :

python3 -c 'import json; d=json.load(open("/tmp/users.json")); print(len(d["data"]), d["hasMore"])'
node -e 'const d=require("/tmp/users.json"); console.log(d.data.length, d.hasMore)'

cat / head le fichier seulement quand vous avez réellement besoin de voir la structure brute pour du debugging one-off. Quand vous parcourez les pages, écrivez chaque page dans son propre fichier (ex. page-${offset}.json) pour que les pages individuelles restent indépendamment inspectables.

Commandes core en un coup d'œil

Commande Objectif Drapeaux clés
clerk init Scaffold Clerk dans un projet. Un bootstrap non-authentifié sans --app, ou une exécution agent non-authentifiée sans --app ou lien existant, écrit des clés de développement temporaires par défaut — pas de login requis (voir Accountless setup). --starter supporte seulement le bootstrap pour Next.js, React Router, Astro, Nuxt, TanStack Start, React, Vue, et JavaScript. --accountless avec --app/--login, et --template/--fresh avec --login, sont des erreurs d'usage avant tout scaffolding. --template/--fresh sur une exécution qui résout vers une vrai app (y compris simplement signed in) err seulement après la résolution de stratégie — donc une exécution starter laisse le projet scaffoldé derrière. --framework, --pm, --name (avec --starter), --app, --starter, --accountless, --login, --template, --fresh, -y, --no-skills
clerk auth login Login OAuth navigateur (stocke token). Non requis pour bootstrap ou instance config accountless. Mode agent : no-op si déjà logged in. Sans session stockée, il ouvre toujours un navigateur et lie un callback localhost, donc il n'est pas sans surveillance ; préférez CLERK_PLATFORM_API_KEY pour les flux headless. Alias : signup, signin, sign-in. Raccourci top-level : clerk login. -
clerk auth logout Effacer les identifiants stockés. Alias : signout, sign-out. Raccourci top-level : clerk logout. -
clerk whoami Imprimer l'email logged-in. -
clerk link / clerk unlink Lier ce repo à une app Clerk, ou supprimer le lien. unlink requiert --yes en mode agent. (voir --help)
clerk env pull Écrire les clés publiques + secret au fichier env du framework (fusionner, pas écraser). Résout .env.development.local → fichier préféré framework → .env.local ; override avec --file. (voir --help)
clerk config {pull,schema} Récupérer la config instance JSON, ou son JSON Schema. (voir --help)
clerk config patch Mise à jour partielle (PATCH) de la config instance. Passez --destructive pour réellement supprimer les sous-ressources touchées par le patch au lieu de les réinitialiser aux défauts. --app, --instance, --file, --json, --dry-run, --yes, --destructive
clerk config put Remplacement complet (PUT) de la config instance. Passez --destructive pour réellement supprimer les sous-ressources supprimées au lieu de les réinitialiser aux défauts. --app, --instance, --file, --json, --dry-run, --yes, --destructive
clerk apps {list,create} Lister ou créer les applications Clerk. Par défaut JSON en mode agent. (voir --help)
clerk users (sans subcommand) Sélecteur interactif pour les actions users en mode humain ; en mode agent imprime la liste d'actions et exit 2. Toujours passer un subcommand explicite depuis les agents. --app, --instance, --secret-key
clerk users list Lister les users via des drapeaux BAPI curés. La sortie JSON (défaut quand piped ou en mode agent) est {data, hasMore} donc les appelants peuvent paginer sans /users/count. --limit défaut à 100 (max 250). --limit, --offset, --query, --email-address, --phone-number, --username, --user-id, --external-id, --order-by, --json, --app, --instance, --secret-key
clerk users create Créer un user à partir des drapeaux curés ou d'un corps BAPI raw. Pas de prompt de confirmation dans aucun mode - il écrit immédiatement. --yes est accepté mais n'a aucun effet. --dry-run est le seul filet de sécurité ; prévisualiser avec d'abord. --email, --phone, --username, --password, --first-name, --last-name, --external-id, -d, --data, --file, --dry-run, --yes, --json
clerk users open [user-id] Ouvrir la page du dashboard d'un user. Le mode agent requiert user-id et imprime un descripteur JSON au lieu de lancer un navigateur. (voir --help)
clerk impersonate [user] Se connecter comme un user pour débugger : crée un actor token à vie courte et imprime l'URL de sign-in. Alias : clerk imp. Requiert clerk auth login (pas de bypass --secret-key-only) — chaque token est estampillé cli:<email> pour l'auditabilité. [user] accepte un ID user_..., email exact, ou terme de fuzzy search. En production, il contourne le MFA de l'user et peut compter contre le quota d'impersonation — confirmer avec l'user d'abord. --print, --open, --yes, --expires-in <seconds> (défaut 3600), --actor <context>, --app, --instance
clerk impersonate revoke <actor-token-id> Révoquer un actor token en attente. L'id du token est imprimé seulement à la création (l'API Backend n'a pas d'endpoint actor-token list), donc capturez-le alors. --app, --instance
clerk open [subpath] Ouvrir le dashboard de l'app liée dans un navigateur. Mode agent : imprime un descripteur JSON au lieu d'ouvrir. (voir --help)
clerk deploy Assistant de déploiement production mode humain. Mode agent : émet un handoff JSON read-only et dit à l'agent s'il faut demander à l'humain de lancer l'assistant, attendre le provisioning, finir OAuth, ou ne rien faire. --mode agent, --mode human, --verbose
clerk deploy status Vérification de déploiement read-only. Déclenche une vérification DNS, rapporte l'agrégat domain et OAuth readiness, et exit 0 seulement quand complet. Le mode agent fait une vérification rapide par défaut ; passez --wait pour continuer à attendre. --mode agent, --wait, --verbose
clerk webhooks listen First-party local webhook tunnel (comme stripe listen) : ouvre une URL relay inbox Svix et forward chaque delivery vers votre handler local. Pas d'auth, pas de projet lié, pas d'API Clerk. Flux complet dans references/recipes.md. --forward-to <url> (requis), --token <c_token>, -H, --header <k:v> (répétable), --json (NDJSON)
clerk webhooks token Minter un relay token (c_ + 10 base62 chars) pour épingler une URL inbox listen stable cross-machines : clerk webhooks listen --token "$(clerk webhooks token)" --forward-to .... --json
clerk webhooks verify Vérifier une signature webhook hors ligne (HMAC local pur, pas d'auth) : à partir d'une ligne event listen sauvegardée (--delivery @event.json) ou à partir des quatre valeurs brutes. --secret <whsec> (requis), --delivery @file, --payload @file, --id, --timestamp, --signature, --json
clerk enable orgs / clerk disable orgs Basculer Organizations sur l'instance. Pour les features orgs, composants, et usage API, voir la skill clerk-orgs. --force-selection, --auto-create, --max-members <n>, --domains, --dry-run, --yes, --app, --instance
clerk enable billing / clerk disable billing Basculer billing pour les users et/ou orgs (défaut les deux). Pour les plans, composants pricing, et entitlements, voir la skill clerk-billing. --for <orgs\|users>, --dry-run, --yes, --no-skills (enable seulement), --app, --instance
clerk doctor Vérification de santé (version CLI, login, link, env, config, completion ; plus sonde host-execution en mode agent). --json, --spotlight, --verbose, --fix
clerk api [path] HTTP authentifié vers Backend/Platform API. -X, -d, --file, --dry-run, --yes, --include, --app, --secret-key, --instance, --platform
clerk api ls [filter] Découvrir les endpoints du catalogue OpenAPI bundlé. (voir --help)
clerk completion [shell] Imprimer un script de shell completion (bash, zsh, fish, powershell). -
clerk update Mettre à jour le CLI à la dernière version. --channel, -y, --all

clerk <command> --help est la source de vérité pour les drapeaux. Cette table est une indication, pas une spec. Avant de lancer une combinaison de commande ou drapeau non-familière, lancez clerk <command> --help une fois par session. Chaque commande définit aussi setExamples([...]) en source, que --help rend comme un bloc Examples copy-pasteable, donc vous avez rarement besoin de deviner la syntaxe.

Comportement mode agent (important)

Le CLI auto-détecte le mode agent quand stdout n'est pas un TTY, ou quand --mode agent / CLERK_MODE=agent est défini. En mode agent :

  • Les prompts interactifs sont désactivés. Les commandes qui montreraient normalement des sélecteurs (link sans --app, unlink sans --yes, users sans subcommand) soit auto-résolvent soit exit avec une erreur d'usage. clerk api sans args imprime une guidance d'usage et exit 0 ; passez un endpoint (ou ls) explicitement. Toujours passer les drapeaux explicites (--app, --yes) dans les appels scriptés.
  • Les opérations sensibles à l'hôte émettent un avertissement sandbox une fois par invocation. L'état Clerk du répertoire home, l'accès keychain, les appels Clerk en réseau, le lancement du navigateur, et la configuration de callback OAuth localhost peuvent déclencher l'avertissement montré ci-dessus. S'il apparaît, relancez la même commande sur l'hôte avant de faire confiance au résultat.
  • Si votre harness ne se présente pas clairement comme mode agent, forcez-le. Utilisez --mode agent ou CLERK_MODE=agent quand vous voulez que le comportement non-interactif du CLI et le chemin sandbox warning s'appliquent de manière déterministe.
  • link supporte les flux agent déterministes. En mode agent, clerk link --app <id> lie directement. Sans --app, le CLI va d'abord essayer un autolink basé clé silencieux ; s'il ne peut pas déterminer l'app sans ambiguïté, il exit et vous dit de passer --app.
  • Pour init, suivez clerk-setup. Elle possède la support framework, accountless, app-linking, migration, et login-order guidance donc les instructions setup ont une source de vérité.
  • --fresh est destructeur. Il remplace l'app temporaire et écrase les clés env et le breadcrumb .clerk/keyless.json sans prompt, orphelinant l'app précédente et ses users. Ne le passez jamais juste pour relancer init.
  • unlink requiert --yes en mode agent. Il porte sur isAgent() && !options.yes et exit avec une erreur d'usage sans. Ceci est l'exception, pas le pattern - voir la balle suivante.
  • Seul unlink requiert réellement --yes. Chaque autre porte de confirmation est écrite comme isHuman() && !options.yes, donc le mode agent la saute carrément : la mutation s'exécute sans prompt et sans erreur. Passer --yes est inoffensif mais ne change rien. Ne le traitez pas comme une porte de sécurité - --dry-run est la vrai.
  • impersonate requiert le positional [user] en mode agent. Si un terme de recherche correspond à plusieurs users, il exit 2 listant les IDs user candidats — reessayez avec un ID user_... spécifique. La sortie est un objet JSON ({url, id, userId, actor, ...}); exposez url à l'utilisateur et capturez id — c'est la seule chance d'enregistrer la poignée revoke.
  • webhooks listen est long-running. Lancez-le en background. En mode agent (ou avec --json) il émet NDJSON : une ligne ready ({type:"ready", relay_url, forward_to}), puis une ligne event par delivery — chaque ligne event peut être refeedée vers clerk webhooks verify --delivery.
  • doctor --fix est ignoré. Analysez le champ remedy de la sortie doctor --json et agissez dessus vous-même.
  • apps list et apps create défaut à JSON quand piped.
  • users défaut à JSON quand piped, comme apps. clerk users list et clerk users create émettent JSON en mode agent. Bare clerk users (sans subcommand) est une erreur d'usage en mode agent - passez list, create, ou open explicitement. clerk users open requiert le positional user-id en mode agent et imprime un descripteur JSON au lieu de lancer un navigateur.
  • deploy a un agent handoff plus une porte de vérification. En mode agent, bare clerk deploy est read-only et émet un handoff JSON. Il ne drive jamais l'assistant interactif. Ne dites pas à Claude ou un autre agent de lancer ! clerk deploy, parce que l'assistant a besoin de prompts stdin interactifs. Demandez à l'humain de lancer clerk deploy dans une nouvelle fenêtre terminal quand nécessaire, puis lancez clerk deploy status --mode agent pour vérifier l'accomplissement. Voir references/agent-mode.md.
  • --input-json <json|@file|-> élargit JSON en drapeaux sur n'importe quelle commande (ex. clerk init --input-json '{"framework":"next","yes":true}'). Stdin a besoin du marqueur explicite - (echo '{"yes":true}' | clerk init --input-json -) ; le stdin piped nu n'est pas auto-détecté, donc les boucles shell et les commandes auto-reading (cat body.json | clerk api …) sont intactes. Placez --input-json après le leaf subcommand. Règles complètes dans references/agent-mode.md.

Matrice complète et détails sandbox dans references/agent-mode.md.

Format de sortie et erreurs

  • Sortie JSON : --json sur apps list et doctor. Pour clerk api, le corps de réponse est le JSON brut API, donc piped dans jq librement.
  • Codes de sortie : 0 succès, 1 erreur runtime, 2 erreur usage/validation. doctor retourne 1 si un test a échoué.
  • Format d'erreur : Les erreurs présentées à l'utilisateur impriment une ligne unique vers stderr et définissent un code de sortie non-zéro. Utilisez --verbose pour des stack traces quand vous debuguez.

Règles de sécurité pour usage autonome

  1. Découvrir avant d'agir : clerk api ls <keyword> avant clerk api <path>.
  2. Prévisualiser les mutations : --dry-run sur chaque config patch, config put, api -X POST/PATCH/PUT/DELETE.
  3. Cibler explicitement en production : passez --instance prod au lieu de vous fier aux défauts, et confirmez avec l'utilisateur avant toute mutation production.
  4. Ne jamais commiter des secrets : env pull écrit vers .env.local (qui devrait être gitignored). Ne collez pas les clés secret dans le code ou le chat.
  5. Utilisez doctor --json pour diagnostiquer avant d'assumer que le CLI est cassé.

Références

  • references/auth.md - flux auth, ordre de résolution de clé, comportement host-vs-sandbox, ciblage --app/--instance, Backend vs Platform API.
  • references/recipes.md - recettes copy-pasteable pour les tâches Clerk courantes.
  • references/agent-mode.md - matrice comportement mode agent, sémantique sandbox warning, codes de sortie, format d'erreur.

Skills similaires