CommunityRédaction et éditiongithub.com

ubie-oss/n8n-cli

Un outil CLI autonome pour n8n

Qu'est-ce que n8n-cli ?

Ce skill fournit une interface en ligne de commande autonome pour gérer les workflows n8n, écrite en TypeScript/Bun. Il permet de construire, importer, appliquer, tester et suivre les exécutions de workflows n8n, en s'intégrant avec l'API n8n distante. L'outil offre des options de déploiement flexibles : construction depuis les sources locales pour les développements en cours, mise à jour automatique depuis les versions GitHub pour les binaires pré-compilés, ou construction manuelle. Il comprend également des fonctionnalités de linting, de formatage, de conversion entre JSON/YAML, et de gestion des exécutions avec des informations d'erreur détaillées. Ce skill souligne les bonnes pratiques, comme toujours utiliser le mode dry-run avant d'appliquer des modifications et spécifier explicitement les identifiants de workflow plutôt que d'appliquer sur des répertoires entiers, ce qui le rend adapté aux flux de travail CI/CD et aux environnements multi-workflows.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add ubie-oss/n8n-cli

Installed? Explore more Rédaction et édition skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

Demander à votre IA préférée

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

Documentation

Skill n8n-cli Operations

Un skill pour assister à la gestion des workflows avec n8n-cli (TypeScript/Bun).

Initialisation de la Session (Important)

Pour les nouvelles sessions, exécutez toujours ce qui suit en premier afin de garantir que n8n-cli est à jour.

Priorité 1 : Construction depuis la Source Locale (Développement)

Si le dépôt source de n8n-cli est disponible via add-dir (par exemple, /chemin/vers/n8n-cli/Makefile existe), construisez à partir de la source locale plutôt que d'utiliser une version. Cela garantit que les dernières modifications de développement sont reflétées immédiatement.

# Si le dépôt n8n-cli est visible via add-dir
N8N_CLI_REPO="/chemin/vers/n8n-cli"  # Remplacez par le chemin add-dir
if [ -f "$N8N_CLI_REPO/Makefile" ]; then
  echo "Construction de n8n-cli depuis la source locale : $N8N_CLI_REPO"
  cd "$N8N_CLI_REPO" && bun install && make build
  cp "$N8N_CLI_REPO/n8n-cli" /chemin/vers/cible/n8n-cli
  cd /chemin/vers/cible
  echo "Construit depuis la source locale : $(./n8n-cli version 2>/dev/null | head -1)"
fi

Priorité 2 : Mise à Jour Automatique depuis les Versions GitHub (Recommandé)

Les binaires pré-construits sont disponibles dans les Versions GitHub. C'est plus rapide que de construire depuis la source et garantit que vous utilisez la version officielle.

# 1. Vérifier la dernière version
DERNIERE_VERSION=$(gh release view --repo ubie-oss/n8n-cli --json tagName -q '.tagName' 2>/dev/null)

# 2. Vérifier la version locale actuelle (si le binaire existe)
VERSION_ACTUELLE=""
if [ -x ./n8n-cli ]; then
  VERSION_ACTUELLE=$(./n8n-cli version 2>/dev/null | head -1 | grep -oE 'v[0-9]+\.[0-9]+\.[0-9]+' || echo "")
fi

# 3. Comparer et télécharger si nécessaire
if [ -z "$VERSION_ACTUELLE" ] || [ "$VERSION_ACTUELLE" != "$DERNIERE_VERSION" ]; then
  echo "Mise à jour de n8n-cli : ${VERSION_ACTUELLE:-aucune} -> ${DERNIERE_VERSION}"

  # Détection de la plateforme
  ARCH=$(uname -m)
  OS=$(uname -s | tr '[:upper:]' '[:lower:]')
  case "$ARCH" in
    arm64|aarch64) NOM_ACTIF="n8n-cli-${OS}-arm64" ;;
    x86_64)        NOM_ACTIF="n8n-cli-${OS}-x64" ;;
    *)             echo "Architecture non prise en charge : $ARCH"; exit 1 ;;
  esac

  # Télécharger le binaire
  gh release download "$DERNIERE_VERSION" --repo ubie-oss/n8n-cli --pattern "$NOM_ACTIF" --output n8n-cli --clobber
  chmod +x ./n8n-cli
  echo "Mis à jour vers $(./n8n-cli version 2>/dev/null | head -1)"
else
  echo "n8n-cli est à jour : $VERSION_ACTUELLE"
fi

Solution de Repli : Construction depuis la Source

Si l'interface CLI gh n'est pas disponible ou si vous avez besoin d'une version de développement :

# Installer les dépendances + construire le CLI
bun install && make build

Vérification de la construction :

./n8n-cli version

Configuration de l'Environnement

Vérification du Fichier .env

Si .env existe à la racine du projet, n8n-cli peut être utilisé sans spécifier de paramètres. Ne lisez pas le contenu.

# Vérifier uniquement l'existence de .env (ne pas lire le contenu)
test -f .env && echo ".env existe - n8n-cli peut être utilisé sans paramètres"

Si .env existe :

  • N8N_API_URL et N8N_API_KEY sont déjà configurés
  • ./n8n-cli peut être exécuté sans paramètres

Si .env n'existe pas :

  • Demandez à l'utilisateur de créer un fichier .env
  • Ou utilisez les options --api-url et --api-key

Création de .env (Uniquement si Nécessaire)

cp .env.example .env
# Demandez à l'utilisateur de modifier

Commandes Courantes

1. Vérification de l'État du Workflow Distant

Vérifier un workflow spécifique :

# Obtenir les informations d'un workflow par son ID
./n8n-cli workflow get <id-du-workflow>

# Afficher au format tableau pour une meilleure lisibilité
./n8n-cli -o table workflow get <id-du-workflow>

# Enregistrer dans un fichier (utile pour les comparaisons de différences)
./n8n-cli workflow get <id-du-workflow> > /tmp/workflow-distant.json

Lister les workflows :

# Tous les workflows
./n8n-cli workflow list

# Format tableau
./n8n-cli -o table workflow list

# Actifs uniquement
./n8n-cli workflow list --active

2. Importer des Workflows (Distant -> Local)

Vérifier le Format Local Avant l'Importation

Lorsque vous récupérez du contenu distant en local, suivez toujours ces étapes :

  1. Vérifier le format du fichier local

    # Vérifier si le fichier existe et son format
    ls -la definitions/*<id-du-workflow>* definitions/**/*<id-du-workflow>*
    
    
  2. Utiliser les options d'importation appropriées selon le format

    • Fichiers .json : utilisez uniquement --ids
    • Fichiers .yaml/.yml : utilisez à la fois --ids et --yaml

Importer un workflow spécifique :

# Workflow au format JSON
./n8n-cli import --ids=<id-du-workflow>

# Workflow au format YAML
./n8n-cli import --ids=<id-du-workflow> --yaml

# Vers un répertoire personnalisé
./n8n-cli import --ids=<id-du-workflow> -d ./mon-dossier

Importer plusieurs workflows :

# Liste séparée par des virgules
./n8n-cli import --ids=abc123,def456,ghi789

Importer tous les workflows :

./n8n-cli import

Options supplémentaires :

OptionDescription
--include-archivedInclure les workflows archivés
--cleanup-orphansSupprimer les fichiers orphelins sans ID correspondant
-t, --threshold <int>Nombre minimum de lignes pour l'extraction de fichier externe (par défaut : 0, configurable dans CLAUDE.md)
--dry-runAperçu uniquement (aucune modification de fichier)
--tags <tags>Filtrer par noms de balises séparés par des virgules (condition ET)

3. Dry-run (Aperçu des Modifications)

Vérifiez toujours avec dry-run avant d'appliquer :

# Aperçu des modifications pour tous les workflows
./n8n-cli apply --dry-run

# Workflow spécifique uniquement (par ID)
./n8n-cli apply --dry-run --ids=<id-du-workflow>

# Fichier spécifique uniquement
./n8n-cli apply --dry-run -d definitions/chemin/vers/workflow.json

Exemple de sortie :

=== CRÉATION (1 workflow) ===
  + nouveau-workflow.json (nom : "Nouvelle Automatisation")

=== MISE À JOUR (2 workflows) ===
  ~ existant.json (id : R2cTI0LDzCJSnvNG)
    - nom : "Ancien Nom" -> "Nouveau Nom"
    - nœuds : 3 -> 5 nœuds

=== IGNORÉ (1 workflow) ===
  = inchangé.json (aucune modification)

Résumé (dry-run) : 1 à créer, 2 à mettre à jour, 1 inchangé

4. Appliquer (Déploiement)

Les assistants IA doivent toujours utiliser --ids

# Appliquer un workflow spécifique uniquement (recommandé)
./n8n-cli apply --ids=<id-du-workflow>

# Appliquer un fichier spécifique uniquement
./n8n-cli apply -d definitions/chemin/vers/workflow.json

# Forcer l'application (écraser les modifications distantes)
./n8n-cli apply --ids=<id-du-workflow> --force

Interdit : Appliquer à un répertoire entier

# Ces commandes ne doivent PAS être exécutées par une IA
./n8n-cli apply -d definitions/
./n8n-cli apply

Options supplémentaires :

OptionDescription
--from-git-changes <spec>Appliquer uniquement les fichiers modifiés dans le diff Git
--yaml / --no-yamlActiver/désactiver le traitement YAML
--allow-duplicatesIgnorer la vérification de noms en double en amont (par défaut : activé ; utilisez --force pour passer outre les avertissements au lieu de désactiver la vérification)
--no-auto-tagDésactiver le balisage automatique (managed-as-code)
-p, --project <id>Spécifier l'ID du projet cible

Variables d'environnement :

  • APPLY_FILTER_BY_TAGS - Filtrer par noms de balises séparés par des virgules (condition ET)

Mode diff Git :

# Appliquer uniquement les modifications d'une branche de fonctionnalité
./n8n-cli apply --from-git-changes origin/main..HEAD

# Aperçu
./n8n-cli apply --from-git-changes origin/main..HEAD --dry-run

# Modifications des 3 derniers commits
./n8n-cli apply --from-git-changes HEAD~3..HEAD

Détection de conflit à 3 voies : Lorsque --from-git-changes est spécifié, les conflits sont détectés en comparant la Base (point de référence), le Local (actuel) et le Distant (serveur) pour identifier uniquement les vrais conflits.

5. Linter (Contrôles de Qualité)

Le linter est intégré au CLI. Aucune construction séparée nécessaire.

Remarque : Les arguments positionnels ne sont pas pris en charge. Spécifiez toujours les fichiers/répertoires avec -f ou -d.

# Vérifier un fichier spécifique (-f requis)
./n8n-cli lint -f definitions/<nom_fichier>

# Vérifier un répertoire spécifique
./n8n-cli lint -d ./definitions/projet-exemple

# Vérifier tous les workflows
./n8n-cli lint -d ./definitions

# Sortie JSON (pour CI/CD)
./n8n-cli lint -d ./definitions -o json

Options :

OptionDescription
-d, --dir <chemin>Répertoire des fichiers de définition
-f, --file <fichiers...>Fichier(s) spécifique(s)
-c, --config <chemin>Chemin du fichier de configuration (.n8nlintrc.json)
--disable-rule <nom>Désactiver une ou plusieurs règles spécifiques
--list-rulesLister toutes les règles
-o, --output <format>Format de sortie : text, json (par défaut : text)

Règles (11 règles) :

RègleSévéritéDescription
json-syntaxerreurVérification de la syntaxe JSON
required-fieldserreurVérification des champs obligatoires (nom, nœuds, connexions)
connection-referenceerreurVérification de l'existence du nœud cible de la connexion
webhook-id-requirederreurVérifier que les nœuds webhook et formTrigger ont le champ webhookId
orphaned-nodeavertissementDétection des nœuds orphelins
implicit-json-refavertissementDétection des références $json implicites
expression-mode-prefixavertissementDétection du préfixe = manquant
ai-agent-output-refavertissementDétection des références erronées à la sortie de l'agent IA
node-paramsavertissementValidation du schéma des paramètres du nœud
node-ref-field-checkavertissementValidation de l'existence du champ référencé
node-ref-cardinalityavertissementValidation de l'utilisation de .item/.first()

Fichier de configuration (.n8nlintrc.json) :

{
  "rules": {
    "json-syntax": "error",
    "required-fields": "error",
    "orphaned-node": "warning",
    "implicit-json-ref": "off"
  }
}

Ordre de recherche du fichier de configuration :

  1. Chemin spécifié avec l'option --config
  2. .n8nlintrc.json / .n8nlintrc dans le répertoire cible
  3. .n8nlintrc.json / .n8nlintrc dans le répertoire actuel

6. Formateur (Auto-formatage)

Remarque : fmt accepte des arguments positionnels pour les fichiers (pas d'option -f).

# Formater un fichier spécifique (argument positionnel)
./n8n-cli fmt definitions/<nom_fichier>

# Plusieurs fichiers
./n8n-cli fmt definitions/fichier1.yaml definitions/fichier2.yaml

# Formater un répertoire entier
./n8n-cli fmt -d ./definitions

# Aperçu uniquement
./n8n-cli fmt -d ./definitions --dry-run

7. Test (Exécution)

Tester les workflows via des webhooks de test :

# Test de base
./n8n-cli test <id-du-workflow>

# Avec des données de test
./n8n-cli test <id-du-workflow> -d '{"email": "[email protected]"}'

# Attendre la fin de l'exécution (recommandé)
./n8n-cli test <id-du-workflow> --wait-execution

# Activer automatiquement les workflows inactifs
./n8n-cli test <id-du-workflow> --activate

# Vérifier l'URL du webhook uniquement
./n8n-cli test <id-du-workflow> --dry-run

# Vérifier les paramètres d'entrée
./n8n-cli test <id-du-workflow> --show-inputs

Options :

OptionDescription
-d, --data <json>Données de test (chaîne JSON)
--timeout <durée>Délai d'expiration HTTP (par défaut : 30s)
--wait-executionAttendre la fin de l'exécution et afficher les résultats
--activateActiver automatiquement les workflows inactifs
--dry-runVérifier l'URL du webhook uniquement
--show-inputsAfficher les paramètres d'entrée
-o, --output <fmt>Format de sortie : json, table (par défaut : json)

Test à partir d'un fichier local :

# Spécifier un fichier JSON/YAML local
./n8n-cli test ./definitions/mon-workflow.json

8. Exécution (Journaux et Erreurs)

Lister les exécutions récentes :

# Lister toutes les exécutions récentes
./n8n-cli execution list

# Format tableau pour une meilleure lisibilité
./n8n-cli -o table execution list

# Filtrer par statut
./n8n-cli execution list --status error
./n8n-cli execution list --status success

# Filtrer par workflow
./n8n-cli execution list --workflow <id-du-workflow>

# Limiter les résultats
./n8n-cli execution list --limit 5

# Filtres combinés
./n8n-cli execution list --workflow <id-du-workflow> --status error --limit 10

Obtenir les détails d'une exécution :

# Obtenir une exécution par son ID
./n8n-cli execution get <id-execution>

# Format tableau avec les détails des erreurs
./n8n-cli -o table execution get <id-execution>

# Inclure le résumé de l'exécution du nœud
./n8n-cli -o table execution get <id-execution> --show-data

Options pour execution list :

OptionDescription
-w, --workflow <id>Filtrer par ID du workflow
-s, --status <statut>Filtrer par statut (success, error, running, waiting)
-l, --limit <n>Nombre maximal d'exécutions (par défaut : 20)

Options pour execution get :

OptionDescription
--show-dataInclure le résumé de l'exécution du nœud dans la sortie

Informations d'erreur affichées :

ChampDescription
Nœud d'ErreurLe nœud où l'erreur s'est produite
Message d'ErreurLe message d'erreur
Détails de l'ErreurDescription supplémentaire de l'erreur (si disponible)
Dernier NœudLe dernier nœud exécuté

Flux de débogage typique :

# 1. Lister les erreurs récentes
./n8n-cli -o table execution list --status error --limit 5

# 2. Obtenir les détails d'une exécution spécifique ayant échoué
./n8n-cli -o table execution get <id-execution> --show-data

# 3. Examiner les détails de l'erreur et corriger le workflow

9. Convertir (Conversion de Format)

Convertir les fichiers de workflow entre les formats JSON et YAML (local uniquement, pas besoin d'API) :

# Convertir tous les workflows JSON en YAML
./n8n-cli convert -d ./definitions --format yaml

# Convertir des workflows spécifiques par ID
./n8n-cli convert -d ./definitions --format json --ids <id-du-workflow>

# Aperçu sans écrire
./n8n-cli convert -d ./definitions --format yaml --dry-run

# Conserver les fichiers originaux
./n8n-cli convert -d ./definitions --format yaml --keep

# Convertir un seul fichier
./n8n-cli convert --format yaml definitions/<nom_fichier>.json

Options :

OptionDescription
--format <format>Format cible : json, yaml (obligatoire)
-d, --directory <répertoire>Répertoire à analyser pour les fichiers de workflow
--ids <ids>IDs de workflow séparés par des virgules à convertir
--tags <tags>Filtrer par balises (séparées par des virgules, condition ET)
-t, --threshold <n>Nombre minimum de lignes pour l'externalisation du code (JSON→YAML)
--dry-runAperçu uniquement
--keepConserver les fichiers originaux

Comportement :

  • JSON→YAML : génère YAML + _subfiles/ avec le code externalisé
  • YAML→JSON : résout les références !include et supprime _subfiles/
  • Les fichiers déjà dans le format cible sont ignorés
  • Les fichiers originaux sont supprimés après la conversion, sauf si --keep

10. Tables de Données

Gérer les tables de données et les lignes :

# Lister toutes les tables de données
./n8n-...

[suite tronquée pour la traduction]

Skills associés