Skills
Atelier de Skills
Skill Workshop est le parcours gouverné d’OpenClaw pour créer et mettre à jour les
Skills de l’espace de travail. Les agents et les opérateurs n’écrivent jamais directement
dans SKILL.md par ce parcours — ils créent une proposition (brouillon en attente avec
contenu, liaison à la cible, état de l’analyseur, hachages et métadonnées de restauration)
qui ne devient une Skill active qu’une fois appliquée.
Skill Workshop écrit uniquement les Skills de l’espace de travail. Il ne modifie jamais les Skills intégrées, de Plugin, de ClawHub, issues de racines supplémentaires, gérées, d’agents personnels ou système.
Fonctionnement
- Proposition d’abord : le contenu généré est stocké dans
PROPOSAL.md, et non dansSKILL.md. - L’application est la seule écriture active : la création, la mise à jour et la révision ne modifient jamais les Skills actives.
- Limité à l’espace de travail : les créations ciblent la racine
skills/de l’espace de travail ; les mises à jour ne sont autorisées que pour les Skills modifiables de l’espace de travail. - Aucun écrasement : la création échoue si la Skill cible existe déjà.
- Lié au hachage : les propositions de mise à jour sont liées au hachage actuel
de la cible et passent à l’état
stalesi la Skill active change avant l’application. - Soumis à l’analyseur : l’application réexécute l’analyseur de sécurité avant l’écriture.
- Récupérable : l’application écrit les métadonnées de restauration avant de modifier les fichiers actifs.
- Interfaces cohérentes : la messagerie, la CLI et le Gateway appellent tous le même service.
Cycle de vie
création/mise à jour -> pendingrévision -> pendingapplication -> appliedrejet -> rejectedquarantaine -> quarantinedchangement de cible -> staleSeule une proposition pending peut être révisée, appliquée, rejetée ou mise en
quarantaine.
Gestion du cycle de vie
Le Gateway suit l’utilisation agrégée des Skills dans la base de données d’état
partagée. Une fois par jour, il examine les Skills créées et appliquées par Skill
Workshop. Les Skills inutilisées pendant plus de 30 jours deviennent stale ;
après 90 jours, elles deviennent archived et sont exclues des nouveaux instantanés
de Skills des agents. Les fichiers des Skills archivées restent inchangés sur le
disque. Les Skills créées manuellement ne sont jamais gérées ; seules les Skills
créées par des propositions Skill Workshop entrent dans la gestion du cycle de vie.
Les Skills épinglées échappent aux transitions du cycle de vie. Une Skill obsolète
revient à l’état active après son utilisation et l’exécution du balayage suivant.
Les Skills archivées ne reviennent que par une restauration explicite :
Les transitions du cycle de vie et les restaurations s’appliquent aux nouvelles sessions ; les sessions en cours conservent leur instantané actuel de Skills.
openclaw skills curator statusopenclaw skills curator pin <skill>openclaw skills curator unpin <skill>openclaw skills curator restore <skill>Toutes les commandes du gestionnaire acceptent --json. L’état signale également
les candidats au chevauchement déterministes uniquement à titre de suggestions ;
il ne fusionne jamais les Skills et n’appelle jamais de modèle.
Messagerie
Demandez à l’agent la Skill souhaitée ; il appelle skill_workshop et renvoie un
identifiant de proposition.
Apprendre à partir des travaux récents
Utilisez /learn pour transformer la conversation actuelle ou des sources nommées
en une proposition de Skill guidée par les normes :
/learn/learn docs/runbook.md and https://example.com/guide; focus on recoverySans demande, /learn demande à l’agent d’extraire de la conversation actuelle le
processus réutilisable. Avec une demande, l’agent traite les chemins, URL, notes
collées et références à la conversation comme des sources tout en respectant les
exigences relatives à l’objectif, à la portée et au nommage. Il collecte les sources
avec ses outils existants, puis appelle skill_workshop avec action: "create".
La proposition obtenue reste pending ; /learn ne l’applique jamais. Examinez-la
et appliquez-la au moyen du processus d’approbation habituel ou avec
openclaw skills workshop.
Créer :
Crée une Skill appelée morning-catchup qui exécute ma routine de boîte de réception du lundi.Mettre à jour une Skill existante de l’espace de travail :
Mets à jour trip-planning pour vérifier également les plans de cabine avant la réservation.Itérer sur une proposition en attente :
Montre-moi la proposition morning-catchup.Révise-la pour signaler également tout élément marqué comme urgent.Applique la proposition morning-catchup.Les actions apply, reject et quarantine lancées par l’agent affichent par
défaut une demande d’approbation. Définissez skills.workshop.approvalPolicy sur
"auto" pour l’ignorer dans les environnements de confiance.
La demande indique l’identifiant de la proposition et la Skill cible, et affiche la
description de la proposition, le nombre de fichiers auxiliaires et la taille du
corps. Les demandes d’approbation sont limitées dans le temps afin de se terminer
avant le délai de surveillance de l’outil de l’agent. Si aucune décision n’arrive
avant l’expiration de la demande, l’action du cycle de vie ne s’exécute pas : la
proposition reste en attente et inchangée. Décidez ultérieurement dans l’interface
de Skill Workshop ou exécutez
openclaw skills workshop apply|reject|quarantine <proposal-id>. Les agents ne
doivent pas réessayer en boucle une action du cycle de vie expirée.
CLI
# Créeropenclaw skills workshop propose-create \ --name morning-catchup \ --description "Rattrapage quotidien de la boîte de réception : trier, archiver, faire ressortir, rédiger, planifier" \ --proposal ./PROPOSAL.md # Mettre à jour une Skill existante de l’espace de travailopenclaw skills workshop propose-update trip-planning --proposal ./PROPOSAL.md # Répertorier et examineropenclaw skills workshop listopenclaw skills workshop inspect <proposal-id> # Réviser avant approbationopenclaw skills workshop revise <proposal-id> --proposal ./PROPOSAL.md # Clôtureropenclaw skills workshop apply <proposal-id>openclaw skills workshop reject <proposal-id> --reason "Doublon"openclaw skills workshop quarantine <proposal-id> --reason "Nécessite un examen de sécurité"Chaque sous-commande accepte --agent <id> (espace de travail cible ; par défaut,
celui déduit du répertoire de travail actuel, puis l’agent par défaut) et --json
(sortie structurée). propose-create, propose-update et revise acceptent
également --goal <text> et --evidence <text> pour enregistrer le contexte de la
proposition avec --proposal.
Contenu de la proposition
Tant qu’elle est en attente, la proposition est stockée sous forme de
PROPOSAL.md avec un frontmatter réservé à la proposition :
---name: "morning-catchup"description: "Rattrapage quotidien de la boîte de réception : trier, archiver, faire ressortir, rédiger, planifier"status: proposalversion: "v1"date: "2026-05-30T00:00:00.000Z"---Lors de l’application, Skill Workshop écrit le fichier SKILL.md actif et supprime
les champs réservés à la proposition : status, la version de la proposition et
la date de la proposition.
Fichiers auxiliaires
Utilisez --proposal-dir lorsque la Skill proposée nécessite des fichiers à côté
de PROPOSAL.md :
openclaw skills workshop propose-create \ --name weekly-update \ --description "Bilan du vendredi : statistiques, faits marquants, trois priorités de la semaine prochaine" \ --proposal-dir ./weekly-update-proposalLe répertoire doit contenir PROPOSAL.md. Les fichiers auxiliaires doivent se
trouver sous assets/, examples/, references/, scripts/ ou templates/.
Skill Workshop les analyse, les hache et les stocke avec la proposition, puis les
écrit à côté du fichier SKILL.md actif uniquement lors de l’application.
Chemins de fichiers auxiliaires rejetés : chemins absolus, segments de chemin masqués, traversée de répertoires, chemins qui se chevauchent, fichiers exécutables, texte non UTF-8, octets nuls et chemins situés hors des dossiers auxiliaires standard.
Outil de l’agent
Le modèle utilise skill_workshop avec une action obligatoire :
create | update | revise | list | inspect | apply | reject | quarantine.
Les autres paramètres s’appliquent selon l’action :
| Paramètre | Utilisé par | Remarques |
|---|---|---|
name |
create, inspect, revise |
Obligatoire pour create ; sinon, résout une proposition en attente par nom |
description |
create, update, revise |
160 octets maximum |
skill_name |
update |
Nom ou clé de la Skill existante |
proposal_content |
create, update, revise |
Stocké sous forme de PROPOSAL.md ; limité par skills.workshop.maxSkillBytes |
support_files |
create, update, revise |
Tableau de { path, content } |
goal, evidence |
create, update, revise |
Contexte en texte libre |
proposal_id |
inspect, revise, apply, reject, quarantine |
Proposition cible |
reason |
apply, reject, quarantine |
Facultatif |
query, status, limit |
list |
Filtrage/pagination ; limit : 50 maximum, 20 par défaut |
Les agents doivent utiliser skill_workshop pour les travaux générés sur les
Skills. Ils ne doivent pas créer ni modifier les fichiers de proposition au moyen
de write, edit, exec, de commandes d’interpréteur ou d’opérations directes
sur le système de fichiers.
Skills suggérées
OpenClaw détecte les instructions durables telles que « la prochaine fois »,
« n’oublie pas de » et les corrections réactives lorsqu’un tour interactif se
termine, y compris les tours ayant échoué. Au tour suivant, l’agent propose
d’enregistrer le dernier processus détecté au moyen de skill_workshop ; l’utilisateur
décide s’il faut créer une proposition. Cette suggestion intégrée ne crée ni ne
modifie une Skill par elle-même. Activez skills.workshop.autonomous.enabled pour
créer directement des propositions en attente à la place.
Approbation et autonomie
{ skills: { workshop: { autonomous: { enabled: false, }, allowSymlinkTargetWrites: false, approvalPolicy: "pending", maxPending: 50, maxSkillBytes: 40000, }, },}| Paramètre | Valeur par défaut | Effet |
|---|---|---|
autonomous.enabled |
false |
Crée directement des propositions en attente au lieu de proposer le dernier processus détecté au tour suivant. |
allowSymlinkTargetWrites |
false |
Autorise l’application à écrire à travers les liens symboliques des Skills de l’espace de travail dont la cible réelle figure dans skills.load.allowSymlinkTargets. |
approvalPolicy |
"pending" |
"pending" exige une demande d’approbation avant une action apply, reject ou quarantine lancée par l’agent. "auto" ignore la demande (l’agent doit toujours appeler l’action). |
maxPending |
50 |
Limite le nombre de propositions en attente et en quarantaine par espace de travail (1 à 200). |
maxSkillBytes |
40000 |
Limite la taille du corps de la proposition en octets (1 024 à 200 000). |
La capture autonome reconnaît les règles prospectives (par exemple, « à partir de maintenant ») et les corrections réactives (par exemple, « ce n’est pas ce que j’ai demandé »). Elle regroupe les nouvelles instructions par sujet dans un maximum de trois propositions par tour, dirige les correspondances de vocabulaire vers les Skills existantes et modifiables de l’espace de travail, et révise sa propre proposition en attente lorsqu’une autre correction cible la même Skill.
Les descriptions des propositions sont toujours limitées à 160 octets,
indépendamment de maxSkillBytes.
Méthodes du Gateway
| Méthode | Portée |
|---|---|
skills.proposals.list |
operator.read |
skills.proposals.inspect |
operator.read |
skills.proposals.create |
operator.admin |
skills.proposals.update |
operator.admin |
skills.proposals.revise |
operator.admin |
skills.proposals.requestRevision |
operator.admin |
skills.proposals.apply |
operator.admin |
skills.proposals.reject |
operator.admin |
skills.proposals.quarantine |
operator.admin |
skills.curator.status |
operator.read |
skills.curator.pin |
operator.admin |
skills.curator.unpin |
operator.admin |
skills.curator.restore |
operator.admin |
requestRevision est disponible uniquement via le Gateway (sans équivalent dans la CLI ni dans les outils d’agent) : cette méthode
transmet des instructions de révision en texte libre à la session de discussion de l’agent propriétaire,
au lieu de remplacer directement PROPOSAL.md, pour les interfaces qui demandent à l’agent
de réviser plutôt que de soumettre littéralement un nouveau contenu.
Stockage
<OPENCLAW_STATE_DIR>/skill-workshop/ proposals.json proposals/<proposal-id>/ proposal.json PROPOSAL.md rollback.json assets/ examples/ references/ scripts/ templates/Répertoire d’état par défaut : ~/.openclaw.
proposal.json: enregistrement canonique de la proposition.proposals.json: index de liste rapide, pouvant être reconstruit à partir des dossiers de propositions.PROPOSAL.md: proposition de Skills en attente.rollback.json: métadonnées de récupération écrites avant que l’application des modifications n’affecte les fichiers actifs.
Limites
| Limite | Valeur |
|---|---|
| Description | 160 octets |
| Corps de la proposition | skills.workshop.maxSkillBytes (40 000 par défaut ; plafond strict de 1 Mio) |
| Fichiers annexes | 64 par proposition |
| Taille des fichiers annexes | 256 Kio chacun, 2 Mio au total |
| Propositions en attente + mises en quarantaine | skills.workshop.maxPending par espace de travail (50 par défaut) |
Dépannage
| Problème | Résolution |
|---|---|
Skill proposal description is too large |
Réduisez description à 160 octets ou moins. |
Skill proposal content is too large |
Réduisez le corps de la proposition ou augmentez skills.workshop.maxSkillBytes. |
Target skill changed after proposal creation |
Révisez la proposition en fonction de la cible actuelle ou créez-en une nouvelle. |
Proposal scan failed |
Examinez les résultats de l’analyse, puis révisez ou mettez la proposition en quarantaine. |
untrusted symlink target |
Configurez skills.load.allowSymlinkTargets et activez skills.workshop.allowSymlinkTargetWrites uniquement pour les racines de Skills partagées intentionnellement. |
Support file paths must be under one of... |
Déplacez les fichiers annexes sous assets/, examples/, references/, scripts/ ou templates/. |
| La proposition n’apparaît pas dans la liste | Vérifiez l’espace de travail sélectionné par --agent ainsi que OPENCLAW_STATE_DIR. |
L’agent ne peut pas appeler skill_workshop |
Vérifiez la politique d’outils active et le mode d’exécution. coding inclut l’outil ; les politiques restrictives tools.allow doivent le répertorier explicitement, et les exécutions en bac à sable doivent utiliser une session d’agent normale côté hôte ou la CLI. |
Diagnostic de la politique d’outils
Lorsque la capture autonome est activée, openclaw doctor exécute la
vérification core/doctor/skill-workshop-tool-policy pour l’agent par défaut. Si la politique
masque skill_workshop, l’avertissement indique la première couche de configuration qui l’exclut et
la modification exacte à apporter à allow ou alsoAllow. Les anciens guides opérationnels peuvent encore utiliser
openclaw plugins inspect skill-workshop ; cette commande explique désormais que Skill
Workshop est intégré et affiche la même indication concernant la politique, le cas échéant.
Voir aussi
- Skills pour l’ordre de chargement, la priorité et la visibilité
- Création de Skills pour les notions de base de la rédaction manuelle de
SKILL.md - Configuration des Skills pour le schéma complet de
skills.workshop - CLI des Skills pour les commandes
openclaw skills