---
title: "Commandes"
description: "Toutes les commandes, ce qu’elles modifient et celles qui changent ce que voient les visiteurs."
canonical: "https://atelier201.com/docs/fr/cli/commands"
updated: "2026-11-06"
---

# Commandes

Aucune commande ne coûte de crédits. Seuls quatre groupes changent ce que voient les visiteurs : `publish`,
`publish rollback`, `publish unpublish` et `domains`. Toutes les autres modifient le
brouillon.

## Compte

```bash
atelier201 account                 # espace de travail, offre, autorisations de cet identifiant
atelier201 credits                 # solde et tous les crédits accordés
atelier201 usage --from 2026-01-01 # crédits utilisés sur une période
```

## Sites

```bash
atelier201 sites list
atelier201 sites create "Maison Dupont" --slug maison-dupont --locale fr --link
atelier201 sites get
atelier201 sites rename "Maison Dupont Boulangerie"
atelier201 sites delete            # demande de saisir le slug ; --confirm <slug> dans un script
```

`sites create` part du modèle de site Atelier201 et le construit une fois. Un site supprimé
est immédiatement mis hors ligne, puis supprimé en quelques minutes. Exécutez donc d’abord `atelier201 site pull`
si vous risquez d’en avoir besoin.

## Dossier de projet

```bash
atelier201 site link --site <id>   # associe ce dossier à un site
atelier201 site pull               # récupère ici les fichiers du brouillon
atelier201 site push --message "New menu" --build --wait
```

`site push` remplace le brouillon par le contenu du dossier et crée une seule entrée dans l’historique. La commande ignore
`node_modules`, `dist`, `.astro`, `.git`, les fichiers `.env` et les clés, ainsi que tout ce qui figure dans le fichier
`.gitignore` à la racine, dans la limite de 50 MB. Elle refuse d’écraser les modifications apportées sur le
site depuis votre dernière synchronisation (exécutez d’abord `site pull`, ou utilisez `--force`). De son côté, `site pull`
refuse d’écraser un fichier que vous avez modifié localement.

## Contenu

```bash
atelier201 content model
atelier201 content list blog
atelier201 content get blog hello-world
atelier201 content save blog hello-world --data entry.json --body hello.md
atelier201 content delete blog hello-world
atelier201 content singleton business
atelier201 content save-singleton business --data business.json
atelier201 content set business:/hours/2/close "18:00"
atelier201 content set business:/seats 12 --as number
atelier201 content replace "Open 9 to 5" "Open 9 to 6"
atelier201 sites apply plan.json
atelier201 media place business:/hero/image --query "bakery counter with fresh bread" --alt "Our counter"
```

Consultez d’abord `content model`. Chaque modification est vérifiée par rapport à ce modèle. `--expect <hash>`
n’enregistre le contenu que si l’entrée possède toujours le hash que vous avez consulté, et `--create-only` refuse
d’écraser du contenu existant.

## Fichiers, historique et ensembles de modifications

```bash
atelier201 files list --under src/content
atelier201 files read src/pages/index.astro
atelier201 files search "opening hours"
atelier201 files commit --message "Update the menu" --put src/pages/menu.astro=menu.astro
atelier201 history list
atelier201 history compare --to <revision>
atelier201 history restore <revision>
atelier201 changesets open "Add a gallery page"
atelier201 changesets stage <changeset_id> --put src/pages/gallery.astro=gallery.astro
atelier201 changesets commit <changeset_id>
```

`files commit` crée une seule entrée dans l’historique. Si le fichier a changé depuis que vous l’avez consulté, `--expect <path>=<hash>` refuse
l’ensemble de la modification avec le code de sortie `6`. Un ensemble de modifications fonctionne de la même façon sur plusieurs appels et reste ouvert pendant 10 minutes. `history restore` ajoute une nouvelle
entrée identique à une entrée antérieure, sans rien effacer.

## Médias

```bash
atelier201 media list
atelier201 media upload photo.jpg --alt "A loaf of bread"
atelier201 media delete media/photo.jpg
atelier201 media stock search bakery counter morning light
atelier201 media stock import pixabay 1234567 --alt "Croissants on a bakery counter"
atelier201 media models
atelier201 media generate --model p-image --estimate "a sunlit bakery counter, flat illustration"
atelier201 media generate --model nano-banana "a sunlit bakery counter, photo, no text" --alt "A bakery counter"
atelier201 media generation <generation_id> --wait
```

La recherche et l’importation de médias libres de droits sont gratuits. `media generate` coûte des crédits : la commande affiche le
prix exact et demande confirmation (`--yes` permet de l’accepter, et est obligatoire sans terminal). Elle nécessite également l’autorisation `media:generate`, que `atelier201 auth login`
ne demande pas, sauf si vous l’ajoutez avec `--scope`.

## Compilation et aperçu

```bash
atelier201 builds start --wait
atelier201 builds list
atelier201 builds get <build_id>
atelier201 builds log <build_id>
atelier201 previews create --days 7
atelier201 previews list
atelier201 previews revoke <preview_id>
```

`builds start --wait` attend jusqu’à 5 minutes. La commande se termine avec le code `0` lorsque la compilation est
`ready` ; en cas d’échec, elle renvoie un code différent de zéro et affiche la fin du journal de compilation.

## Mise en ligne

```bash
atelier201 publish review                       # affiche la compilation, les blocages ; ne modifie rien
atelier201 publish                              # met en ligne la dernière compilation réussie, après confirmation
atelier201 publish --build <build_id>
atelier201 publish history
atelier201 publish rollback --publication <id>
atelier201 publish unpublish
```

`publish`, `publish rollback` et `publish unpublish` indiquent les modifications prévues et demandent confirmation.
Dans un script, passez `--yes`. Chaque commande lit d’abord l’état, puis envoie la génération ainsi obtenue. Si une autre personne effectue une mise en ligne entre-temps, la commande est refusée avec le code de sortie
`6` au lieu d’écraser les changements.

## Domaines

```bash
atelier201 domains list
atelier201 domains add www.example.com   # affiche les enregistrements DNS à créer
atelier201 domains check <domain_id>
atelier201 domains address <slug>
atelier201 domains main <domain_id>
atelier201 domains remove <domain_id>
```

Un domaine personnalisé nécessite une offre payante. Consultez [Domaines](/docs/platform/domains).

## Avant toute connexion

```bash
atelier201 site push --guest --name "Maison Dupont"
```

Aucun compte n’est nécessaire. Le dossier est mis en ligne sous forme de démo et deux liens sont affichés : celui de la
démo et un lien privé à transmettre uniquement à son propriétaire pour que le site lui appartienne. Consultez
[Sites invités](/docs/platform/guest-sites).

## Guides

```bash
atelier201 skills list
atelier201 skills get create-site
```

Les guides utilisés par l’assistant Atelier201 : avant de commencer, lisez celui qui correspond à votre tâche.
Aucune connexion n’est nécessaire. Dans un terminal, `get` affiche le Markdown ; si la sortie est redirigée ou si vous utilisez `--json`, la commande renvoie l’objet JSON (avec `body`).

## Solutions de secours

```bash
atelier201 api GET /sites
atelier201 api POST /sites --data '{"name":"Maison Dupont"}'
atelier201 doctor
atelier201 mcp
atelier201 feedback send --problem "..." --situation "..." --expected-solution "..."
```

`atelier201 api` permet d’accéder à n’importe quel endpoint, y compris à ceux ajoutés après votre version de la CLI. Une nouvelle fonctionnalité n’a donc pas besoin d’attendre une mise à jour. `atelier201 doctor` vérifie
la connectivité, les identifiants, la version et le décalage de l’horloge. `atelier201 mcp` relie l’entrée-sortie standard au
serveur MCP pour les clients qui ne peuvent pas communiquer en HTTP.
