Référence des Skills
Commandes CLI
Découverte
# Lister les packages de skills
refly skill list [options]
--status <status> # Filtre : draft, published, deprecated
--mine # Afficher uniquement mes packages
--tags <tags> # Filtrer par tags (séparés par des virgules)
--page <number> # Numéro de page (défaut : 1)
--page-size <number> # Taille de page (défaut : 20)
# Rechercher des packages publics
refly skill search <query> [options]
--tags <tags> # Filtrer par tags (séparés par des virgules)
--page <number> # Numéro de page (défaut : 1)
--page-size <number> # Taille de page (défaut : 20)
# Obtenir les détails du skill
refly skill get <skillId> [options]
--include-workflows # Inclure les détails des workflows
--share-id <shareId> # ID de partage pour les skills privés
Cycle de vie
# Créer un package de skill (voir « Modes de création de skills » ci-dessous)
refly skill create [options]
--name <name> # Nom du skill (obligatoire)
--version <version> # Version sémantique (défaut : 1.0.0)
--description <desc> # Description du skill
--triggers <triggers> # Phrases déclencheurs (séparées par des virgules)
--tags <tags> # Tags de catégorie (séparés par des virgules)
--workflow <workflowId> # Lier un seul workflow
--workflow-ids <ids> # Lier plusieurs workflows (séparés par des virgules)
--workflow-spec <json> # Spec JSON du workflow
--workflow-query <query> # Description en langage naturel
--verbose # Inclure les détails du workflow en sortie
# Publication
refly skill publish <skillId> # Rendre public
refly skill unpublish <skillId> # Rendre privé
refly skill delete <skillId> [options]
--force # Ignorer la confirmation
# Gestion locale
refly skill sync [options] # Synchroniser le registre avec le système de fichiers
--dry-run # Aperçu des modifications uniquement
--prune # Supprimer les entrées orphelines
refly skill validate [path] [options]
--fix # Tenter de corriger les problèmes
Installation
# Installer un skill
refly skill install <skillId> [options]
--version <version> # Version spécifique
--share-id <shareId> # ID de partage pour les skills privés
--config <json> # Config JSON d'installation
# Lister les installations
refly skill installations [options]
--status <status> # Filtre : downloading, initializing, ready, error, disabled
--page <number> # Numéro de page (défaut : 1)
--page-size <number> # Taille de page (défaut : 20)
# Désinstaller
refly skill uninstall <installationId> [options]
--force # Ignorer la confirmation
Exécution
# Exécuter un skill installé
refly skill run <installationId> [options]
--input <json> # JSON d'entrée pour le skill
--workflow <skillWorkflowId> # Exécuter un workflow spécifique uniquement
--async # Exécuter de manière asynchrone
Modes de création de skills
Mode 1 : Générer un workflow à partir d'une requête
refly skill create --name <name> --workflow-query "<query>"
Comportement :
- Appelle le backend IA pour générer le workflow
- Crée le skill et lie le workflow
- Retourne skillId + workflowId
Métadonnées optionnelles (ne génèrent pas le workflow par elles-mêmes) :
--description,--triggers,--tags
Exemple :
refly skill create \
--name comfyui-refly-skill \
--workflow-query "ComfyUI image generation workflow collection" \
--description "ComfyUI image workflow collection" \
--triggers "comfyui,text to image,image generation,image to image" \
--tags "image,comfyui"
Mode 2 : Lier un workflow existant
refly skill create --name <name> --workflow <workflowId>
Lier plusieurs workflows :
refly skill create --name <name> --workflow-ids "<workflowId1,workflowId2>"
Exemple :
refly skill create \
--name my-skill \
--description "My custom skill" \
--workflow c-zybbx65ydi5npo7xevjx1wlr \
--triggers "custom,workflow" \
--tags "internal"
Mode 3b : Lier plusieurs workflows (explicite)
refly skill create --name <name> --workflow-ids "<workflowId1,workflowId2>"
Exemple :
refly skill create \
--name multi-workflow-skill \
--description "Multiple workflow entry points" \
--workflow-ids "c-aaa111,c-bbb222" \
--triggers "multi,entry" \
--tags "batch,workflow"
Mode 3 : Utiliser une spec de workflow (structurée)
refly skill create --name <name> --workflow-spec '<json>'
Exemple :
refly skill create \
--name pdf-processor \
--workflow-spec '{
"nodes": [
{"id": "n1", "type": "start", "data": {"title": "Start"}},
{"id": "n2", "type": "skillResponse", "data": {"title": "Process PDF", "metadata": {"query": "Extract and summarize PDF content"}}}
],
"edges": [
{"id": "e1", "source": "n1", "target": "n2"}
]
}'
Remarque : Les exemples utilisent
startetskillResponse. D'autres types de nœuds peuvent être supportés par le backend.
Mode 4 : Skill local uniquement (sans package cloud)
À utiliser quand vous voulez uniquement un répertoire de skill local et une entrée dans le registre.
# Créer les fichiers de skill locaux manuellement, puis synchroniser
refly skill sync
Vous pouvez ensuite créer un package de skill cloud avec :
refly skill create --name <name> --workflow <workflowId>
Logique de génération de workflow
Quand aucun de --workflow, --workflow-ids, --workflow-spec, ou --workflow-query n'est spécifié,
la CLI retournera skill.create.needs_workflow avec des options suggérées et des exemples.
Structure des répertoires
~/.refly/skills/
├── base/ # Fichiers de skill base (cible du symlink pour 'refly')
│ ├── SKILL.md
│ └── rules/
│ ├── workflow.md
│ ├── node.md
│ ├── file.md
│ └── skill.md
└── <skill-name>/ # Répertoires de skills de domaine
└── SKILL.md
~/.claude/skills/
├── refly → ~/.refly/skills/base/ # Symlink du skill base
└── <skill-name> → ~/.refly/skills/<name>/ # Symlinks des skills de domaine
Fonctionnement des symlinks
- Skill base :
~/.claude/skills/refly→~/.refly/skills/base/ - Skills de domaine :
~/.claude/skills/<name>→~/.refly/skills/<name>/
Claude Code découvre les skills via les symlinks dans ~/.claude/skills/. Chaque skill est un symlink pointant vers le répertoire de skill réel dans ~/.refly/skills/.
Modèle de skill de domaine
Localisation : ~/.refly/skills/<skill-name>/SKILL.md (accédé via ~/.claude/skills/<skill-name>/SKILL.md)
---
name: <skill-name>
description: <résumé sur une ligne, moins de 100 caractères>
workflowId: <workflow-id>
triggers:
- <phrase-1>
- <phrase-2>
tags:
- <tag-1>
author: <author>
version: 1.0.0
---
# <Skill Name>
## Quick Start
<Exemple minimal de code>
## Run
```bash
refly skill run <installationId> --input '<json>'
```
## Advanced
**Feature A**: See [FEATURE_A.md](FEATURE_A.md)
**API Reference**: See [REFERENCE.md](REFERENCE.md)
Bonnes pratiques
Nommage : minuscules, tirets, max 64 caractères (pdf-processing, doc-translator)
Description : verbe + quoi + quand, troisième personne, moins de 100 caractères
- Bon : "Extracts text from PDF files. Use when processing PDF documents."
- Mauvais : "I can help you with PDFs"
Triggers : 3-6 phrases hautement pertinentes, mélanger EN/ZH si nécessaire
Structure : Chaque skill est un répertoire avec skill.md comme entrée ; repousser les détails vers les fichiers adjacents
Création de workflow :
- Être précis dans la requête de workflow - aide l'IA à générer un workflow exact
- Inclure des triggers diversifiés - couvrir les variations EN/ZH
- Tester avant de publier - installer puis exécuter (
refly skill install->refly skill run) - Utiliser
--workflow-specpour les scénarios complexes nécessitant un contrôle précis
Skills locaux vs skills cloud
| Type | Localisation | Gestion | Cas d'usage |
|---|---|---|---|
| Local | ~/.refly/skills/<name>/ |
Symlinks | Itération rapide |
| Cloud | Backend SkillPackage |
API | Distribution et versioning |
Flux d'intégration :
- Créer un skill cloud ->
refly skill create(génère un workflow + symlink local) - Publier le skill ->
refly skill publish-> rend le skill découvrable - Installer pour exécuter ->
refly skill install-> crée SKILL.md local + symlink - Exécuter le skill ->
refly skill run <installationId>
Exemples de sortie
Sortie de liste
{
"ok": true,
"type": "skill.list",
"version": "1.0",
"payload": {
"skills": [
{
"skillId": "skp-xxx",
"name": "my-skill",
"version": "1.0.0",
"description": "Skill description",
"status": "published",
"isPublic": true,
"downloadCount": 10,
"createdAt": "2026-01-19T00:00:00Z"
}
],
"total": 10,
"page": 1,
"pageSize": 20,
"hasMore": false
}
}
Sortie des installations
{
"ok": true,
"type": "skill.installations",
"version": "1.0",
"payload": {
"installations": [
{
"installationId": "skpi-xxx",
"skillId": "skp-xxx",
"skillName": "my-skill",
"skillVersion": "1.0.0",
"status": "ready",
"installedAt": "2026-01-19T00:00:00Z"
}
],
"total": 3,
"page": 1,
"pageSize": 20,
"hasMore": false
}
}
Sortie d'exécution
{
"ok": true,
"type": "skill.run",
"version": "1.0",
"payload": {
"executionId": "skpe-xxx",
"installationId": "skpi-xxx",
"status": "completed",
"workflowExecutions": [
{
"skillWorkflowId": "skw-xxx",
"workflowId": "c-xxx",
"status": "completed"
}
],
"result": {},
"error": null
}
}
Détails de la synchronisation des skills
refly skill sync va :
- Valider les symlinks existants dans
~/.claude/skills/ - Vérifier les symlinks cassés (pointant vers des répertoires inexistants)
- Vérifier les répertoires orphelins (répertoires sans symlinks)
- Avec
--fix: recréer les symlinks cassés - Avec
--prune: supprimer les symlinks cassés
Détails de la validation des skills
refly skill validate [path] va :
- Valider le schéma du frontmatter et les champs obligatoires
- Retourner les erreurs et avertissements par fichier
- Fournir un résumé des fichiers valides/invalides
Exemple de sortie :
{
"ok": true,
"type": "skill.validate",
"version": "1.0",
"payload": {
"path": "/path/to/skills",
"summary": {
"total": 3,
"valid": 2,
"invalid": 1,
"warnings": 1
}
}
}
Gestion des erreurs
| Code d'erreur | Cause | Solution |
|---|---|---|
VALIDATION_ERROR |
Paramètres manquants ou format invalide | Vérifier --name et d'autres paramètres obligatoires |
ACCESS_DENIED |
Pas de permission pour la ressource | Vérifier la connexion et la propriété de la ressource |
INTERNAL_ERROR |
Erreur serveur | Réessayer plus tard ou contacter le support |
Remarque : Un JSON invalide dans
--workflow-speccausera l'échec de la commande ; assurez-vous que le JSON est valide.