---
read_when:
    - Vous souhaitez que l’agent crée ou mette à jour une skill depuis le chat
    - Vous devez examiner, appliquer, rejeter ou mettre en quarantaine une ébauche de Skill générée
    - Vous configurez l’approbation, l’autonomie, le stockage ou les limites de Skill Workshop
sidebarTitle: Skill Workshop
summary: Créer et mettre à jour les Skills de l’espace de travail via la révision de Skill Workshop
title: Atelier de Skills
x-i18n:
    generated_at: "2026-07-12T03:10:52Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    provider: openai
    source_hash: 9e073e6ef874ad0dc885272cbb62f6e94c18b0c242a1d24a67a3095fee2ce0c9
    source_path: tools/skill-workshop.md
    workflow: 16
---

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
  dans `SKILL.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 `stale` si 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

```text
création/mise à jour -> pending
révision             -> pending
application          -> applied
rejet                -> rejected
quarantaine          -> quarantined
changement de cible  -> stale
```

Seule 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.

```bash
openclaw skills curator status
openclaw 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 :

```text
/learn
/learn docs/runbook.md and https://example.com/guide; focus on recovery
```

Sans 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 :

```text
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 :

```text
Mets à jour trip-planning pour vérifier également les plans de cabine avant la réservation.
```

Itérer sur une proposition en attente :

```text
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

```bash
# Créer
openclaw 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 travail
openclaw skills workshop propose-update trip-planning --proposal ./PROPOSAL.md

# Répertorier et examiner
openclaw skills workshop list
openclaw skills workshop inspect <proposal-id>

# Réviser avant approbation
openclaw skills workshop revise <proposal-id> --proposal ./PROPOSAL.md

# Clôturer
openclaw 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 :

```markdown
---
name: "morning-catchup"
description: "Rattrapage quotidien de la boîte de réception : trier, archiver, faire ressortir, rédiger, planifier"
status: proposal
version: "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` :

```bash
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-proposal
```

Le 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.

<Note>
`skill_workshop` est un outil d’agent intégré et est inclus dans
`tools.profile: "coding"`. Si une politique plus stricte le masque, ajoutez
`skill_workshop` à la liste `tools.allow` active, ou utilisez
`tools.alsoAllow: ["skill_workshop"]` lorsque la portée utilise un profil sans
`tools.allow` explicite. Les exécutions en bac à sable ne construisent pas l’outil
Skill Workshop côté hôte ; exécutez donc les actions d’examen des propositions
depuis une session normale d’agent côté hôte ou depuis la CLI.
</Note>

## 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

```json5
{
  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

```text
<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](/fr/tools/skills) pour l’ordre de chargement, la priorité et la visibilité
- [Création de Skills](/fr/tools/creating-skills) pour les notions de base de la rédaction manuelle de `SKILL.md`
- [Configuration des Skills](/fr/tools/skills-config) pour le schéma complet de `skills.workshop`
- [CLI des Skills](/fr/cli/skills) pour les commandes `openclaw skills`
