@hgdc/docs 0.1.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/docs.schema.json +25 -0
  2. package/package.json +3 -1
  3. package/src/build/auto-import.ts +5 -24
  4. package/src/build/base-links.ts +35 -0
  5. package/src/build/outputs.ts +17 -4
  6. package/src/core/components.ts +166 -0
  7. package/src/core/config.ts +50 -0
  8. package/src/core/feedback-api.ts +17 -0
  9. package/src/core/llms.ts +8 -5
  10. package/src/core/navigation.ts +24 -0
  11. package/src/core/validate.ts +276 -0
  12. package/src/integration.ts +71 -21
  13. package/src/overrides/Footer.astro +154 -0
  14. package/src/overrides/Head.astro +4 -2
  15. package/src/overrides/PageTitle.astro +3 -2
  16. package/src/overrides/Sidebar.astro +2 -2
  17. package/src/overrides/SocialIcons.astro +59 -0
  18. package/template/.astro/content-assets.mjs +4 -1
  19. package/template/.build/.well-known/llms.txt +5 -5
  20. package/template/.build/404.html +5 -5
  21. package/template/.build/_astro/{common.8GHCkW7i.css → common.CQYUsl_5.css} +2 -2
  22. package/template/.build/_hgdc/corpus.json +1 -1
  23. package/template/.build/demarrer/premiere-doc/index.html +12 -12
  24. package/template/.build/demarrer/premiere-doc.md +1 -1
  25. package/template/.build/explications/donnees/index.html +11 -11
  26. package/template/.build/explications/donnees.md +1 -1
  27. package/template/.build/explications/fonctionnement/index.html +12 -12
  28. package/template/.build/explications/fonctionnement.md +3 -3
  29. package/template/.build/guides/agents/index.html +15 -10
  30. package/template/.build/guides/agents.md +15 -1
  31. package/template/.build/guides/assistant/index.html +14 -12
  32. package/template/.build/guides/assistant.md +5 -1
  33. package/template/.build/guides/composants/index.html +15 -15
  34. package/template/.build/guides/ecrire/index.html +12 -12
  35. package/template/.build/guides/ecrire.md +1 -1
  36. package/template/.build/guides/elements/index.html +1 -0
  37. package/template/.build/guides/navigation/index.html +11 -11
  38. package/template/.build/guides/publier/index.html +16 -16
  39. package/template/.build/guides/publier.md +8 -8
  40. package/template/.build/guides/theme/index.html +11 -11
  41. package/template/.build/guides/theme.md +1 -1
  42. package/template/.build/index.html +11 -11
  43. package/template/.build/index.md +5 -5
  44. package/template/.build/llms-full.txt +69 -47
  45. package/template/.build/llms.txt +5 -5
  46. package/template/.build/pagefind/fragment/fr-ch_2a431a9.pf_fragment +0 -0
  47. package/template/.build/pagefind/fragment/fr-ch_35f556a.pf_fragment +0 -0
  48. package/template/.build/pagefind/fragment/fr-ch_456586a.pf_fragment +0 -0
  49. package/template/.build/pagefind/fragment/fr-ch_48ca71e.pf_fragment +0 -0
  50. package/template/.build/pagefind/fragment/fr-ch_72b91f4.pf_fragment +0 -0
  51. package/template/.build/pagefind/fragment/fr-ch_8f256dd.pf_fragment +0 -0
  52. package/template/.build/pagefind/fragment/fr-ch_95a15cc.pf_fragment +0 -0
  53. package/template/.build/pagefind/fragment/fr-ch_aa80c55.pf_fragment +0 -0
  54. package/template/.build/pagefind/fragment/fr-ch_ab79738.pf_fragment +0 -0
  55. package/template/.build/pagefind/fragment/fr-ch_c589c2a.pf_fragment +0 -0
  56. package/template/.build/pagefind/fragment/fr-ch_dab8f5e.pf_fragment +0 -0
  57. package/template/.build/pagefind/fragment/fr-ch_de60b43.pf_fragment +0 -0
  58. package/template/.build/pagefind/index/fr-ch_c5ced52.pf_index +0 -0
  59. package/template/.build/pagefind/pagefind-entry.json +1 -1
  60. package/template/.build/pagefind/pagefind.fr-ch_8a246aa922758.pf_meta +0 -0
  61. package/template/.build/reference/api-assistant/index.html +11 -11
  62. package/template/.build/reference/api-assistant.md +3 -3
  63. package/template/.build/reference/cli/index.html +11 -11
  64. package/template/.build/reference/cli.md +5 -5
  65. package/template/.build/reference/docs-json/index.html +35 -11
  66. package/template/.build/reference/docs-json.md +19 -15
  67. package/template/.build/reference/mcp/index.html +10 -10
  68. package/template/node_modules/.vite/deps/_metadata.json +8 -8
  69. package/template/.build/pagefind/fragment/fr-ch_424fd16.pf_fragment +0 -0
  70. package/template/.build/pagefind/fragment/fr-ch_5a4d77d.pf_fragment +0 -0
  71. package/template/.build/pagefind/fragment/fr-ch_6c36edc.pf_fragment +0 -0
  72. package/template/.build/pagefind/fragment/fr-ch_73d7887.pf_fragment +0 -0
  73. package/template/.build/pagefind/fragment/fr-ch_8234ed3.pf_fragment +0 -0
  74. package/template/.build/pagefind/fragment/fr-ch_8f8a19e.pf_fragment +0 -0
  75. package/template/.build/pagefind/fragment/fr-ch_9f1b981.pf_fragment +0 -0
  76. package/template/.build/pagefind/fragment/fr-ch_a19039d.pf_fragment +0 -0
  77. package/template/.build/pagefind/fragment/fr-ch_d72cc1e.pf_fragment +0 -0
  78. package/template/.build/pagefind/fragment/fr-ch_d732215.pf_fragment +0 -0
  79. package/template/.build/pagefind/fragment/fr-ch_e78d58b.pf_fragment +0 -0
  80. package/template/.build/pagefind/fragment/fr-ch_e92f972.pf_fragment +0 -0
  81. package/template/.build/pagefind/index/fr-ch_f94c95d.pf_index +0 -0
  82. package/template/.build/pagefind/pagefind.fr-ch_fb78ab42961f4.pf_meta +0 -0
@@ -1 +1 @@
1
- {"format":1,"project":"jn7dj6vzkgs7n2d16kqjtb99yd8gbdw0","name":"HGDC Docs","language":"fr","builtAt":"2026-10-15T06:45:09.700Z","theme":{"primary":"#7c3aed","logo":"/images/logo-clair.svg"},"versions":[{"id":null,"label":null,"isDefault":true}],"pages":[{"path":"/demarrer/premiere-doc/","title":"Ta première doc en cinq minutes","description":"Créer le dossier, écrire docs.json et une page, puis voir le site en local.","version":null,"markdown":"Il te faut Node.js 22 ou plus récent, ou Bun. Tout le reste s’installe avec le paquet `@hgdc/docs`.\n\n1. **Créer le dossier**\n\n Un dépôt Git à part, ou un dossier `docs/` dans le dépôt de ton produit.\n\n ```bash\n mkdir docs && cd docs\n npm init -y\n npm install --save-dev @hgdc/docs\n ```\n\n2. **Écrire docs.json**\n\n À la racine du dossier. Seuls `name` et `navigation` sont obligatoires.\n\n ```json\n {\n \"name\": \"Documentation Acme\",\n \"colors\": { \"primary\": \"#0f766e\" },\n \"navigation\": {\n \"groups\": [{ \"group\": \"Démarrer\", \"pages\": [\"index\", \"installation\"] }]\n }\n }\n ```\n\n3. **Écrire les pages**\n\n Une page par entrée de la navigation : `index.mdx` et `installation.mdx`. Chaque page commence par un titre.\n\n ```mdx\n ---\n title: Installation\n description: Installer Acme en deux minutes.\n ---\n\n Lance la commande suivante :\n ```\n\n4. **Voir le site**\n\n Ajoute les scripts dans `package.json`, puis lance `npm run dev`.\n\n ```json\n {\n \"scripts\": {\n \"dev\": \"hgdc-docs dev\",\n \"build\": \"hgdc-docs build\"\n }\n }\n ```\n\n Le site s’ouvre sur `http://localhost:4321` et se recharge à chaque modification.\n\n> **Note**\n>\n> `hgdc-docs build` écrit le site dans `dist/`. Ajoute `dist/` et `.hgdc-docs/` à ton `.gitignore`.\n\n## Et ensuite\n\n- [Publier avec HGDC Host](/guides/publier/) pour mettre le site en ligne.\n- [Écrire en MDX](/guides/ecrire/) pour les titres, les liens, les images et le code.\n- [docs.json](/reference/docs-json/) pour toutes les options."},{"path":"/explications/donnees/","title":"Données et confidentialité","description":"Ce qui est stocké, où, combien de temps, et qui y accède.","version":null,"markdown":"## Ce qui est stocké\n\n| Donnée | Où | Durée |\n| ------------------------------------------------ | ------------------ | ------------------------------ |\n| Pages publiées, en Markdown, et passages indexés | Base de la console | Tant que le projet existe |\n| Questions des visiteurs, réponses, sources | Base de la console | 90 jours |\n| Consommation mensuelle de l’assistant | Base de la console | Tant que l’organisation existe |\n\nLa console ne stocke ni l’adresse IP ni l’identité des visiteurs. L’IP sert seulement, le temps de la requête, à limiter le nombre de questions par minute.\n\n## Qui traite quoi\n\n- **Le site** est servi par HGDC Host.\n- **La recherche du site** tourne dans le navigateur du visiteur : aucune requête ne part.\n- **Les embeddings** des passages et des questions sont calculés par Mistral AI, dans l’Union européenne.\n- **Les réponses** sont rédigées par Claude, le modèle d’Anthropic, appelé directement ou par OpenRouter. La question et les passages trouvés lui sont envoyés.\n\nSans clé d’embeddings, la recherche de l’assistant reste en plein texte : rien ne part chez Mistral.\n\n## Ce que voit l’assistant\n\nUniquement ce que ton site publie : il lit le corpus du site public. Une page qui n’est pas publiée n’existe pas pour lui. Il ne peut ni naviguer sur le web, ni agir : il lit des passages et écrit une réponse.\n\n## Supprimer\n\nSupprimer un projet dans la console efface son index, ses pages et son journal. Le site publié et ton dépôt ne sont pas touchés."},{"path":"/explications/fonctionnement/","title":"Comment ça marche","description":"Du push au site publié, puis à l'assistant qui répond.","version":null,"markdown":"HGDC Docs tient en trois pièces : un modèle de site, HGDC Host qui le publie, et la console qui l’indexe pour l’assistant.\n\n## 1. Le modèle de site\n\nLe paquet `@hgdc/docs` contient un site Astro Starlight complet. `hgdc-docs build` lit ton `docs.json`, prend tes pages MDX et construit un site statique. Rien ne tourne côté serveur : le site est rapide et ne tombe pas en panne avec la console.\n\nPendant le build, chaque page est aussi convertie en Markdown à partir du HTML final. Les composants sont donc déjà rendus : ce que lit un agent est exactement ce que voit un visiteur.\n\n## 2. La publication par HGDC Host\n\nHGDC Host lance le build dans GitHub Actions à chaque push, puis sert le dossier `dist/` sur ton domaine. La doc est une source comme une autre : préversion par branche, retour arrière, domaine.\n\n## 3. L’indexation par la console\n\nLa console relit `/_hgdc/corpus.json` sur le site publié : tous les quarts d’heure, ou quand tu cliques sur **Synchroniser**. Elle vérifie que le corpus porte bien l’identifiant du projet, puis :\n\n1. découpe chaque page en passages, un par section (titre `##` ou plus fin) ;\n2. compare avec l’index existant, passage par passage : seuls les passages nouveaux sont traités ;\n3. calcule leur représentation vectorielle (embedding), qui permet de retrouver une reformulation ;\n4. supprime les passages qui ne sont plus publiés.\n\nUn build identique au précédent ne change rien à l’index.\n\n## 4. La réponse\n\nUne question passe par deux recherches : par mots (les termes exacts, comme `docs.json`) et par sens (les reformulations). Les deux classements sont fusionnés, les six meilleurs passages sont donnés au modèle Claude, qui répond en citant ceux qu’il utilise.\n\n> **Note**\n>\n> L’index d’un projet est fermé aux autres : une recherche ne voit que les passages de son propre projet, vérifiés deux fois."},{"path":"/guides/agents/","title":"llms.txt et MCP","description":"Rendre la doc lisible par les outils d'IA, avec llms.txt, des pages en Markdown et un serveur MCP.","version":null,"markdown":"Les assistants de code et les agents lisent la documentation pour écrire du code juste. HGDC Docs leur donne trois portes d’entrée, sans rien à configurer.\n\n## llms.txt\n\nChaque site publie à sa racine :\n\n- `/llms.txt` : l’index de la doc au format [llmstxt.org](https://llmstxt.org), une ligne par page avec sa description, rangées par onglet et par groupe. Le même fichier répond aussi sur `/.well-known/llms.txt`.\n- `/llms-full.txt` : toute la doc en un seul fichier Markdown.\n\n## Une page en Markdown\n\nChaque page existe aussi en Markdown à la même adresse suivie de `.md` : `/guides/publier.md` pour `/guides/publier/`. Les pages l’annoncent dans leur `<head>` avec `rel=\"alternate\"`.\n\nEn haut de chaque page, **Copier pour un LLM** copie ce Markdown. Le menu à côté ouvre la page dans Claude ou ChatGPT, ou affiche le Markdown.\n\n## Serveur MCP\n\nChaque projet a un serveur MCP en lecture seule. L’adresse est dans l’aperçu du projet, dans la console :\n\n```text\nhttps://docs.hgdc.ch/mcp/<identifiant du projet>\n```\n\nDans Claude Code :\n\n```bash\nclaude mcp add --transport http acme-docs https://docs.hgdc.ch/mcp/<identifiant du projet>\n```\n\nLe serveur propose trois outils :\n\n| Outil | Rôle |\n| ------------- | -------------------------------------------------------------------------------------------- |\n| `search_docs` | Cherche dans la doc et rend les passages les plus proches, avec l’adresse de chaque section. |\n| `get_page` | Rend une page complète en Markdown, à partir de son chemin. |\n| `list_pages` | Liste les pages avec leur titre et leur chemin. |\n\nLe détail du protocole est dans la [référence MCP](/reference/mcp/)."},{"path":"/guides/assistant/","title":"L'assistant IA","description":"Ce que fait l'assistant, d'où viennent ses réponses, et comment le régler.","version":null,"markdown":"L’assistant ajoute un bouton **Demander à l’IA** en bas à droite de chaque page, et `Ctrl I` l’ouvre au clavier. Le visiteur pose sa question ; l’assistant cherche dans ta doc et répond en quelques phrases, avec des renvois numérotés vers les sections utilisées.\n\n## D’où viennent les réponses\n\n1. La question est cherchée dans les pages publiées de ta doc, et seulement là.\n2. Les passages les plus proches sont donnés au modèle Claude, avec une consigne : répondre à partir de ces passages, citer chaque affirmation, ne rien inventer.\n3. Seuls les passages réellement cités deviennent des sources sous la réponse.\n\nSi rien dans la doc ne correspond, l’assistant répond qu’il ne trouve pas, sans appeler le modèle. Une réponse sans aucune source est traitée de la même façon.\n\n> **Les réponses restent générées par IA**\n>\n> Le widget le rappelle sous chaque échange. Une source citée se vérifie en un clic.\n\n## Activer et désactiver\n\nL’assistant est actif dès que `docs.json` porte l’identifiant `project` et que la console a indexé le site. Pour le couper :\n\n- dans la console, **Assistant › Assistant sur le site** (effet immédiat) ;\n- ou dans `docs.json`, `\"assistant\": { \"enabled\": false }` (au prochain build).\n\n## Quota\n\nChaque organisation dispose d’un nombre de questions par mois, toutes docs confondues : 500 dans l’offre de départ. La console affiche la consommation. Au-delà, l’assistant répond qu’il a atteint sa limite, et HGDC relève le plafond sur demande.\n\nPour éviter qu’un seul visiteur épuise le quota, chaque visiteur a droit à 6 questions par minute, et chaque doc à 30.\n\n## Tester et lire le journal\n\n**Assistant › Tester l’assistant** pose une question comme un visiteur. Le **journal** garde les questions des 90 derniers jours avec leur état :\n\n| État | Ce que ça veut dire |\n| -------- | ----------------------------------------------------------------- |\n| Répondu | L’assistant a répondu en citant la doc. |\n| Hors doc | Rien dans la doc ne répond. Souvent une page à écrire. |\n| Erreur | Le modèle n’a pas répondu ; le visiteur a été invité à réessayer. |\n\n> **Astuce**\n>\n> Lis les questions « hors doc » une fois par semaine : c’est la liste des pages qui manquent, écrite par tes visiteurs."},{"path":"/guides/composants/","title":"Composants","description":"Encadrés, étapes, cartes, onglets et accordéons, disponibles dans chaque page sans import.","version":null,"markdown":"Ces composants s’utilisent directement dans une page `.mdx`, sans `import`. Ils portent les mêmes noms que chez Mintlify.\n\n## Encadrés\n\n> **Note**\n>\n> Une information utile à côté du texte.\n\n> **Astuce**\n>\n> Un conseil qui fait gagner du temps.\n\n> **Attention**\n>\n> Un piège à éviter.\n\n> **Danger**\n>\n> Une action qui détruit des données.\n\n```mdx\n<Note>Une information utile à côté du texte.</Note>\n<Tip title=\"Astuce\">Un conseil qui fait gagner du temps.</Tip>\n<Warning>Un piège à éviter.</Warning>\n<Danger>Une action qui détruit des données.</Danger>\n```\n\n`<Info>` et `<Check>` existent aussi. Chacun accepte un `title`.\n\n## Étapes\n\n1. **Installer**\n\n Ajoute le paquet.\n\n2. **Configurer**\n\n Écris `docs.json`.\n\n```mdx\n<Steps>\n <Step title=\"Installer\">Ajoute le paquet.</Step>\n <Step title=\"Configurer\">Écris `docs.json`.</Step>\n</Steps>\n```\n\n## Cartes\n\n[Avec un lien](/guides/publier/)\n\n[Toute la carte est cliquable.](/guides/publier/)\n\nSans lien\n\nPour présenter une idée.\n\n```mdx\n<CardGroup cols={2}>\n <Card title=\"Avec un lien\" href=\"/guides/publier/\">Toute la carte est cliquable.</Card>\n <Card title=\"Sans lien\">Pour présenter une idée.</Card>\n</CardGroup>\n```\n\n`cols` va de 1 à 4. Sur téléphone, les cartes passent l’une sous l’autre.\n\n## Onglets\n\n```bash\nnpm install --save-dev @hgdc/docs\n```\n\n```bash\nbun add --dev @hgdc/docs\n```\n\n```mdx\n<Tabs>\n <Tab title=\"npm\">…</Tab>\n <Tab title=\"Bun\">…</Tab>\n</Tabs>\n```\n\n## Accordéons\n\nFaut-il un compte HGDC pour écrire ?\n\nNon. Le site se construit sans compte. Le compte sert à la console : publication suivie et assistant.\n\nPuis-je garder mes composants Mintlify ?\n\nCeux de cette page, oui. Les autres s’affichent comme du texte : remplace-les ou écris-nous.\n\n```mdx\n<AccordionGroup>\n <Accordion title=\"Question\">Réponse.</Accordion>\n</AccordionGroup>\n```\n\n## Dans le Markdown publié\n\nChaque composant a une forme Markdown : un encadré devient une citation qui commence par son titre en gras, une étape devient un élément de liste numérotée. C’est cette forme que lisent l’assistant, `llms.txt` et les outils d’IA."},{"path":"/guides/ecrire/","title":"Écrire en MDX","description":"Titres, liens, images, code et métadonnées d'une page.","version":null,"markdown":"Chaque page est un fichier `.mdx` (ou `.md`) : du Markdown, plus des composants. Le chemin du fichier donne l’adresse de la page : `guides/publier.mdx` devient `/guides/publier/`.\n\n## Métadonnées\n\nLe haut de la page, entre deux lignes `---`, décrit la page.\n\n```mdx\n---\ntitle: Publier avec HGDC Host\nsidebarTitle: Publier\ndescription: Mettre la doc en ligne et brancher l'assistant.\n---\n```\n\n| Champ | Rôle |\n| -------------- | ---------------------------------------------------------------------------- |\n| `title` | Titre de la page, obligatoire. Aussi le titre de l’onglet du navigateur. |\n| `sidebarTitle` | Libellé plus court dans la barre latérale. |\n| `description` | Une phrase. Reprise par les moteurs de recherche, `llms.txt` et l’assistant. |\n\n## Titres et sections\n\nCommence les sections à `##`. Chaque titre reçoit une ancre (`#publier-avec-host`) : c’est elle que l’assistant cite dans ses sources. Un titre clair donne donc une source claire.\n\n> **Astuce**\n>\n> Une section par question qu’on te pose. L’assistant découpe la doc par titre : une section courte et nommée simplement est retrouvée plus souvent.\n\n## Liens\n\nLes liens internes s’écrivent avec le chemin de la page : `[Publier](/guides/publier/)`. Pour une section : `[le domaine](/guides/publier/#ton-domaine)`.\n\n## Images\n\nRange les images dans `images/`, `img/`, `logo/`, `assets/` ou `static/`, et cite-les avec un chemin qui commence par `/`. Seuls les médias de ces dossiers, le logo et le favicon de `docs.json`, et tout le dossier `public/` (servi à la racine) sont publiés : un fichier oublié ailleurs dans le dépôt ne part jamais en ligne.\n\n```mdx\n![Le tableau de bord](/images/tableau-de-bord.png)\n```\n\nPour une légende, entoure l’image d’un cadre :\n\n```mdx\n<Frame caption=\"Le tableau de bord après la première publication\">\n ![Le tableau de bord](/images/tableau-de-bord.png)\n</Frame>\n```\n\n## Code\n\nLes blocs de code sont colorés et ont un bouton Copier. Indique le langage après les trois accents graves :\n\n````mdx\n```bash\nnpm run build\n```\n````\n\n## Ce qui n’est pas publié\n\nLes fichiers qui commencent par `_` (comme `_brouillon.mdx`), `README.md`, `CHANGELOG.md` et les dossiers `node_modules`, `dist` ou cachés ne deviennent pas des pages."},{"path":"/guides/navigation/","title":"Navigation, onglets et versions","description":"Organiser les pages en groupes, en onglets et en versions dans docs.json.","version":null,"markdown":"La navigation se décrit dans `docs.json`, sous `navigation`. Choisis **une** forme : `pages`, `groups`, `tabs` ou `versions`.\n\n## Pages et groupes\n\nPour une petite doc, une liste de groupes suffit. Un groupe peut contenir d’autres groupes.\n\n```json\n{\n \"navigation\": {\n \"groups\": [\n { \"group\": \"Démarrer\", \"pages\": [\"index\", \"installation\"] },\n {\n \"group\": \"Guides\",\n \"pages\": [\"guides/facturer\", { \"group\": \"Avancé\", \"expanded\": false, \"pages\": [\"guides/webhooks\"] }]\n }\n ]\n }\n}\n```\n\nUne page s’écrit sans extension ni `/` au début : `guides/facturer` pour `guides/facturer.mdx`. Une page citée mais absente fait échouer le build, avec la liste de ce qui manque.\n\n## Onglets\n\nAu-delà d’une vingtaine de pages, sépare les grandes parties en onglets : guides, référence, explications. Les onglets s’affichent en haut de la barre latérale ; chacun a ses propres groupes.\n\n```json\n{\n \"navigation\": {\n \"tabs\": [\n { \"tab\": \"Guides\", \"groups\": [{ \"group\": \"Démarrer\", \"pages\": [\"index\"] }] },\n { \"tab\": \"Référence\", \"groups\": [{ \"group\": \"API\", \"pages\": [\"reference/api\"] }] }\n ]\n }\n}\n```\n\n> **Astuce**\n>\n> Cette doc suit le découpage Diataxis : des guides pour faire, une référence pour vérifier, des explications pour comprendre.\n\n## Versions\n\nQuand ton produit garde plusieurs versions en service, chacune peut avoir sa doc. Le visiteur passe de l’une à l’autre avec un menu en haut de la barre latérale.\n\n```json\n{\n \"navigation\": {\n \"versions\": [\n { \"version\": \"v2\", \"default\": true, \"groups\": [{ \"group\": \"Démarrer\", \"pages\": [\"index\"] }] },\n { \"version\": \"v1\", \"groups\": [{ \"group\": \"Démarrer\", \"pages\": [\"v1/index\"] }] }\n ]\n }\n}\n```\n\nLa version par défaut est celle que lisent l’assistant en priorité et l’index `llms.txt`. Les autres y figurent dans une section « Optional ».\n\n## Précédent et suivant\n\nEn bas de chaque page, les liens Précédent et Suivant suivent l’ordre de la navigation, sans sortir de l’onglet ouvert."},{"path":"/guides/publier/","title":"Publier avec HGDC Host","description":"Mettre la doc en ligne avec HGDC Host, activer HGDC Docs en un clic et brancher l'assistant.","version":null,"markdown":"HGDC Host construit ton site à chaque push et le sert depuis son serveur. La console `docs.hgdc.ch` relit ensuite le site publié pour indexer l’assistant.\n\n## Mettre la doc en ligne\n\n1. **Importer le dépôt**\n\n Dans HGDC Host, crée un projet à partir de ton dépôt GitHub. Host reconnaît une doc HGDC Docs (un `docs.json` et le paquet `@hgdc/docs` dans `package.json`) : il la construit avec `hgdc-docs build` et publie le dossier `dist/`. Aucun fichier de configuration à ajouter.\n\n2. **Fusionner la pull request de Host**\n\n Host propose une pull request qui ajoute son workflow de déploiement. Fusionne-la : la doc part en production.\n\n3. **Pousser**\n\n Chaque push sur la branche principale publie le site en production. Les autres branches ont leur préversion.\n\n## Activer HGDC Docs\n\n1. **Cliquer sur « Activer Docs »**\n\n Sur la vue d’ensemble du projet dans HGDC Host, la carte **Assistant et recherche avec HGDC Docs** propose **Activer Docs**. Host crée le projet dans la console, dans la même organisation. Il faut être admin de l’organisation, et la doc doit déjà être en production.\n\n2. **Publier une fois de plus**\n\n Pousse une modification. Ce build reçoit l’identifiant du projet de la console : le site le porte sans que tu le recopies dans `docs.json`.\n\n3. **Laisser faire**\n\n À chaque mise en production, Host prévient la console, qui relit `/_hgdc/corpus.json` et indexe les pages en quelques secondes. La carte de Host affiche **HGDC Docs est activé** et mène à la console. En plus, la console relit le site tous les quarts d’heure : un appel perdu se rattrape seul.\n\n> **Note**\n>\n> Le projet apparaît dans la console dès que tu t’y connectes avec ton compte HGDC. Ses réglages (domaines, assistant) s’y changent comme pour n’importe quel projet.\n\n## Ton domaine\n\nLe domaine se branche dans HGDC Host, comme pour n’importe quel site : Host annonce la nouvelle adresse à la console à la mise en production suivante. Si la doc répond sur plusieurs adresses (`docs.acme.ch` et `aide.acme.ch`), ajoute les autres dans **Réglages › Domaines** : l’assistant ne répond qu’aux pages servies par ces adresses.\n\n## Relier un projet existant\n\nLe dossier `dist/` est un site statique, il se dépose chez n’importe quel hébergeur. Hors de HGDC Host, ou pour un projet créé directement dans la console, relie la doc à la main.\n\n1. **Créer le projet dans la console**\n\n Sur `docs.hgdc.ch`, ouvre ton organisation, puis **Nouveau projet**. Donne l’adresse de production du site, par exemple `https://docs.acme.ch`.\n\n2. **Copier l'identifiant dans docs.json**\n\n La console affiche une ligne à copier. Ajoute-la dans `docs.json`, puis publie :\n\n ```json\n { \"project\": \"k57a8m2x9q4n1b3c5d7e9f0g2h4j6k8m\" }\n ```\n\n Sans cet identifiant, le site fonctionne mais l’assistant reste caché, et la console refuse d’indexer un site qui ne porte pas le sien.\n\n3. **Synchroniser**\n\n Clique sur **Synchroniser** dans l’aperçu du projet. La console lit `/_hgdc/corpus.json` sur ton site et indexe chaque page, puis relit le site tous les quarts d’heure.\n\n> **Adresse publique seulement**\n>\n> La console n’accepte qu’une adresse `https://` avec un nom de domaine public. Elle ne suit pas les redirections : donne l’adresse finale du site."},{"path":"/guides/theme/","title":"Thème et logo","description":"Poser ta couleur, ton logo et ton favicon dans docs.json.","version":null,"markdown":"Le site suit la DA de HGDC par défaut : gris neutres, coins arrondis, Inter pour le texte. Tu changes trois choses : la couleur, le logo et le favicon.\n\n## Couleur\n\n```json\n{ \"colors\": { \"primary\": \"#0f766e\" } }\n```\n\nLa couleur sert aux liens, à l’onglet actif et aux renvois de l’assistant. Sa teinte est gardée ; sa luminosité est ajustée pour que les liens restent lisibles (contraste de 4,5:1 au moins), en clair comme en sombre.\n\nPour une couleur différente en mode sombre, ajoute `\"dark\": \"#5eead4\"`.\n\n> **Note**\n>\n> Dans la console, **Réglages › Thème** montre l’effet d’une couleur en clair et en sombre, et prépare la ligne à copier dans `docs.json`.\n\n## Logo\n\n```json\n{ \"logo\": { \"light\": \"/images/logo-clair.svg\", \"dark\": \"/images/logo-sombre.svg\" } }\n```\n\nLe chemin part de la racine du dossier de la doc. Un SVG carré ou large, de 32 pixels de haut environ, rend le mieux. Une seule image : `\"logo\": \"/images/logo.svg\"`.\n\n## Favicon\n\n```json\n{ \"favicon\": \"/images/favicon.svg\" }\n```\n\nSans favicon, le site n’en annonce pas d’autre que `/favicon.svg` s’il existe."},{"path":"/","title":"Bienvenue dans HGDC Docs","description":"Ta documentation en MDX, publiée par HGDC Host, avec recherche, llms.txt et un assistant IA qui cite ses sources.","version":null,"markdown":"HGDC Docs transforme un dossier de pages MDX en site de documentation. Tu écris dans ton dépôt Git, HGDC Host publie le site à chaque push, et la console `docs.hgdc.ch` branche un assistant qui répond à tes visiteurs à partir de ta doc, et de rien d’autre.\n\n[Ta première doc](/demarrer/premiere-doc/)\n\n[Un dossier, un fichier `docs.json` et une page : ton site tourne en local en cinq minutes.](/demarrer/premiere-doc/)\n\n[Publier avec HGDC Host](/guides/publier/)\n\n[Relie le dépôt à HGDC Host : chaque push met le site à jour.](/guides/publier/)\n\n[L'assistant IA](/guides/assistant/)\n\n[Il répond aux questions de tes visiteurs et cite les pages qu’il a utilisées.](/guides/assistant/)\n\n[Pour les agents](/guides/agents/)\n\n[`llms.txt`, une version Markdown de chaque page et un serveur MCP en lecture.](/guides/agents/)\n\n## Ce que tu obtiens\n\n- **Un site rapide et lisible** : navigation par onglets et groupes, versions, mode clair et sombre, mise en page pensée pour le téléphone.\n- **La recherche** : `Ctrl K` sur chaque page, sans service externe. L’index est construit avec le site.\n- **Tes couleurs** : une couleur dans `docs.json` suffit. Le contraste des liens est ajusté pour rester lisible.\n- **Un assistant sourcé** : il cherche dans tes pages, répond en quelques phrases et renvoie vers les sections exactes. S’il ne trouve rien, il le dit.\n- **Une doc lisible par les IA** : `llms.txt`, `llms-full.txt`, un bouton « Copier pour un LLM » et un serveur MCP.\n\n## Compatible avec Mintlify\n\nLe fichier `docs.json` reprend celui de Mintlify : nom, couleurs, logo, navigation en onglets, groupes et versions. Les composants les plus courants (`<Note>`, `<Steps>`, `<Card>`, `<Tabs>`…) fonctionnent sans import. Une doc Mintlify se reprend en général sans réécrire les pages.\n\n> **Tout reste en Suisse quand c'est possible**\n>\n> Le site est servi par HGDC Host. Les questions des visiteurs sont gardées 90 jours au plus. Voir [Données et confidentialité](/explications/donnees/)."},{"path":"/reference/api-assistant/","title":"API de l'assistant","description":"La requête que le widget envoie, la réponse et les codes d'erreur.","version":null,"markdown":"Le widget du site appelle une seule route. Tu peux l’appeler toi-même pour intégrer l’assistant dans ton application, depuis une page servie par une adresse déclarée dans la console.\n\n## Requête\n\n```http\nPOST https://docs.hgdc.ch/api/v1/ask\nContent-Type: application/json\nOrigin: https://docs.acme.ch\n```\n\n```json\n{\n \"project\": \"k57a8m2x9q4n1b3c5d7e9f0g2h4j6k8m\",\n \"question\": \"Comment publier ma doc ?\",\n \"page\": \"/guides/publier/\",\n \"previous\": [\"j97f2k8m1q4n6b3c5d7e9f0g2h4j6k8m\"]\n}\n```\n\n| Champ | Rôle |\n| ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |\n| `project` | Identifiant du projet. |\n| `question` | 2 à 1 000 caractères. |\n| `page` | Chemin de la page ouverte. Ses passages sont légèrement favorisés. |\n| `previous` | Les `id` des réponses précédentes de la conversation, 3 au plus. L’assistant relit lui-même ce qu’il a répondu, dans les deux dernières heures. |\n\nL’en-tête `Origin` doit être l’adresse du site ou un des domaines déclarés dans **Réglages › Domaines**. Chaque visiteur a droit à 6 questions par minute et 100 par jour.\n\n## Réponse\n\n```json\n{\n \"id\": \"j97f…\",\n \"status\": \"answered\",\n \"answer\": \"Importe le dépôt dans HGDC Host[^1], puis synchronise le projet dans la console[^2].\",\n \"sources\": [\n { \"n\": 1, \"title\": \"Publier avec HGDC Host\", \"section\": \"Avec HGDC Host\", \"url\": \"https://docs.acme.ch/guides/publier/#avec-hgdc-host\" },\n { \"n\": 2, \"title\": \"Publier avec HGDC Host\", \"section\": \"Relier la console\", \"url\": \"https://docs.acme.ch/guides/publier/#relier-la-console\" }\n ]\n}\n```\n\n`answer` est du Markdown simple ; `[^n]` renvoie à la source `n`. `status` vaut `no_answer` quand la doc ne répond pas : `sources` est alors vide.\n\n## Erreurs\n\n| Code HTTP | `error.code` | Quand |\n| --------- | -------------------- | --------------------------------------------------- |\n| 400 | `invalid_request` | Corps illisible ou question trop courte. |\n| 403 | `origin_not_allowed` | La page n’est pas servie par une adresse du projet. |\n| 403 | `assistant_disabled` | L’assistant est coupé dans la console. |\n| 404 | `project_not_found` | Identifiant inconnu. |\n| 409 | `not_indexed` | Le site n’a pas encore été synchronisé. |\n| 429 | `rate_limited` | Trop de questions en une minute. |\n| 429 | `quota_exceeded` | Le quota mensuel de l’organisation est atteint. |\n| 503 | `unavailable` | Le modèle ne répond pas. Réessayer plus tard. |\n\nChaque erreur porte aussi `error.message`, une phrase en français à montrer telle quelle."},{"path":"/reference/cli/","title":"La commande hgdc-docs","description":"Les commandes dev, build et preview, et les variables d'environnement du build.","version":null,"markdown":"`hgdc-docs` est installée avec le paquet `@hgdc/docs`. Elle se lance depuis le dossier de la doc, ou avec le chemin du dossier en argument.\n\n## Commandes\n\n| Commande | Effet |\n| ------------------- | ---------------------------------------------------------------------------------------------------------- |\n| `hgdc-docs dev` | Site local sur `http://localhost:4321`, rechargé à chaque modification. |\n| `hgdc-docs build` | Site statique dans `dist/`, avec la recherche, `llms.txt`, les pages Markdown et le corpus de l’assistant. |\n| `hgdc-docs preview` | Sert le dernier build, pour vérifier avant de pousser. |\n\nOptions : `--port 4000` change le port de `dev` et `preview`, `--help` affiche l’aide.\n\n## Variables d’environnement\n\n| Variable | Rôle |\n| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `HGDC_DOCS_SITE` | Adresse publique du site (`https://docs.acme.ch`). Rend les liens de `llms.txt` absolus et produit le sitemap. Sur HGDC Host, l’adresse de production est reprise seule. |\n| `HGDC_DOCS_OUT` | Dossier de sortie, `dist/` par défaut. |\n| `HGDC_DOCS_API` | API de l’assistant, `https://docs.hgdc.ch` par défaut. |\n\n## Ce que contient dist/\n\n| Fichier | Contenu |\n| --------------------------------------------------- | -------------------------------------------------------------- |\n| `index.html`, `<page>/index.html` | Les pages du site. |\n| `<page>.md` | Chaque page en Markdown. |\n| `llms.txt`, `llms-full.txt`, `.well-known/llms.txt` | L’index et la doc complète pour les agents. |\n| `pagefind/` | L’index de la recherche. |\n| `_hgdc/corpus.json` | Le contenu publié, lu par la console pour indexer l’assistant. |"},{"path":"/reference/docs-json/","title":"docs.json","description":"Tous les champs du fichier de configuration d'un site HGDC Docs.","version":null,"markdown":"`docs.json` vit à la racine du dossier de la doc. Il reprend le format de Mintlify : les champs que HGDC Docs ne gère pas sont acceptés et ignorés. Pour l’autocomplétion dans ton éditeur, ajoute `\"$schema\": \"https://docs.hgdc.ch/docs.schema.json\"`.\n\n## Champs\n\n| Champ | Type | Obligatoire | Rôle |\n| -------------------- | ---------------------------- | ----------- | --------------------------------------------------------------------------------------------------------------------------- |\n| `name` | texte | oui | Nom de la doc, en tête du site et dans `llms.txt`. 80 caractères au plus. |\n| `description` | texte | non | Une phrase de présentation. |\n| `navigation` | objet | oui | Pages, groupes, onglets ou versions. Voir [Navigation](/guides/navigation/). |\n| `project` | texte | non | Identifiant du projet dans la console. Active l’assistant et l’indexation. |\n| `language` | `fr`, `en`, `de`, `it` | non | Langue de l’interface du site. `fr` par défaut. |\n| `colors.primary` | couleur `#rrggbb` | non | Couleur des liens et des éléments actifs. |\n| `colors.dark` | couleur `#rrggbb` | non | La même, en mode sombre. |\n| `logo` | chemin, ou `{ light, dark }` | non | Logo affiché en tête. |\n| `favicon` | chemin | non | Icône de l’onglet du navigateur. |\n| `footer.socials` | objet | non | Liens vers tes réseaux : `github`, `gitlab`, `linkedin`, `x.com`, `mastodon`, `discord`, `youtube`, `instagram`, `bluesky`. |\n| `assistant.enabled` | oui / non | non | `false` cache l’assistant du site. |\n| `assistant.endpoint` | adresse | non | API de l’assistant, à ne changer que pour un environnement de test. |\n\n## Navigation\n\nQuatre formes, une seule à la fois :\n\n| Forme | Exemple |\n| ---------- | --------------------------------------------------------- |\n| `pages` | `[\"index\", \"installation\"]` |\n| `groups` | `[{ \"group\": \"Démarrer\", \"pages\": [\"index\"] }]` |\n| `tabs` | `[{ \"tab\": \"Guides\", \"groups\": [...] }]` |\n| `versions` | `[{ \"version\": \"v2\", \"default\": true, \"groups\": [...] }]` |\n\nUn groupe accepte `expanded: false` pour être replié par défaut, et peut contenir des groupes.\n\n## Erreurs\n\nUn `docs.json` invalide fait échouer le build avec la liste des problèmes, par exemple :\n\n```text\ndocs.json invalide :\n- colors.primary : couleur attendue au format #rrggbb\n- navigation : utiliser une seule forme parmi versions, tabs, groups ou pages\n```"},{"path":"/reference/mcp/","title":"Serveur MCP","description":"Transport, méthodes et outils du serveur MCP en lecture d'un projet.","version":null,"markdown":"Le serveur suit le [Model Context Protocol](https://modelcontextprotocol.io), transport Streamable HTTP, sans session : chaque requête est indépendante.\n\n```text\nPOST https://docs.hgdc.ch/mcp/<identifiant du projet>\nContent-Type: application/json\nAccept: application/json, text/event-stream\n```\n\nIl répond en JSON (`application/json`), jamais en flux. `GET` et `DELETE` répondent 405. Versions du protocole acceptées : `2025-11-25`, `2025-06-18`, `2025-03-26`.\n\n## Méthodes\n\n| Méthode | Réponse |\n| ------------ | --------------------------------------------------------- |\n| `initialize` | Nom du serveur, capacités (`tools`) et consignes d’usage. |\n| `ping` | Objet vide. |\n| `tools/list` | Les trois outils ci-dessous. |\n| `tools/call` | Le résultat de l’outil, en texte. |\n\nUne notification (message sans `id`) reçoit un 202 sans corps.\n\n## Outils\n\n### search_docs\n\n| Paramètre | Type | Rôle |\n| --------- | -------------- | --------------------------------- |\n| `query` | texte | Question ou mots-clés. |\n| `limit` | entier, 1 à 10 | Nombre de passages, 5 par défaut. |\n\nRend les passages trouvés, chacun avec son titre, sa section, son adresse et son texte.\n\n### get_page\n\n| Paramètre | Type | Rôle |\n| --------- | ----- | ---------------------------------------------------------------- |\n| `path` | texte | Chemin de la page (`/guides/publier/`), ou son adresse complète. |\n\nRend la page en Markdown, précédée de son adresse.\n\n### list_pages\n\nSans paramètre. Rend la liste des pages publiées.\n\n## Limites\n\nLe serveur est public et en lecture seule : il ne donne accès qu’à ce que le site publie déjà. Chaque projet accepte 300 requêtes par minute, chaque visiteur 60. Au-delà, la réponse est un 429."}]}
1
+ {"format":1,"project":"jn7dj6vzkgs7n2d16kqjtb99yd8gbdw0","name":"Docs","language":"fr","builtAt":"2026-10-17T12:15:33.141Z","theme":{"primary":"#7c3aed","logo":"/images/logo-clair.svg"},"versions":[{"id":null,"label":null,"isDefault":true}],"pages":[{"path":"/demarrer/premiere-doc/","title":"Ta première doc en cinq minutes","description":"Créer le dossier, écrire docs.json et une page, puis voir le site en local.","version":null,"markdown":"Il te faut Node.js 22 ou plus récent, ou Bun. Tout le reste s’installe avec le paquet `@hgdc/docs`.\n\n1. **Créer le dossier**\n\n Un dépôt Git à part, ou un dossier `docs/` dans le dépôt de ton produit.\n\n ```bash\n mkdir docs && cd docs\n npm init -y\n npm install --save-dev @hgdc/docs\n ```\n\n2. **Écrire docs.json**\n\n À la racine du dossier. Seuls `name` et `navigation` sont obligatoires.\n\n ```json\n {\n \"name\": \"Documentation Acme\",\n \"colors\": { \"primary\": \"#0f766e\" },\n \"navigation\": {\n \"groups\": [{ \"group\": \"Démarrer\", \"pages\": [\"index\", \"installation\"] }]\n }\n }\n ```\n\n3. **Écrire les pages**\n\n Une page par entrée de la navigation : `index.mdx` et `installation.mdx`. Chaque page commence par un titre.\n\n ```mdx\n ---\n title: Installation\n description: Installer Acme en deux minutes.\n ---\n\n Lance la commande suivante :\n ```\n\n4. **Voir le site**\n\n Ajoute les scripts dans `package.json`, puis lance `npm run dev`.\n\n ```json\n {\n \"scripts\": {\n \"dev\": \"hgdc-docs dev\",\n \"build\": \"hgdc-docs build\"\n }\n }\n ```\n\n Le site s’ouvre sur `http://localhost:4321` et se recharge à chaque modification.\n\n> **Note**\n>\n> `hgdc-docs build` écrit le site dans `dist/`. Ajoute `dist/` et `.hgdc-docs/` à ton `.gitignore`.\n\n## Et ensuite\n\n- [Publier avec Host](/guides/publier/) pour mettre le site en ligne.\n- [Écrire en MDX](/guides/ecrire/) pour les titres, les liens, les images et le code.\n- [docs.json](/reference/docs-json/) pour toutes les options."},{"path":"/explications/donnees/","title":"Données et confidentialité","description":"Ce qui est stocké, où, combien de temps, et qui y accède.","version":null,"markdown":"## Ce qui est stocké\n\n| Donnée | Où | Durée |\n| ------------------------------------------------ | ------------------ | ------------------------------ |\n| Pages publiées, en Markdown, et passages indexés | Base de la console | Tant que le projet existe |\n| Questions des visiteurs, réponses, sources | Base de la console | 90 jours |\n| Consommation mensuelle de l’assistant | Base de la console | Tant que l’organisation existe |\n\nLa console ne stocke ni l’adresse IP ni l’identité des visiteurs. L’IP sert seulement, le temps de la requête, à limiter le nombre de questions par minute.\n\n## Qui traite quoi\n\n- **Le site** est servi par Host.\n- **La recherche du site** tourne dans le navigateur du visiteur : aucune requête ne part.\n- **Les embeddings** des passages et des questions sont calculés par Mistral AI, dans l’Union européenne.\n- **Les réponses** sont rédigées par Claude, le modèle d’Anthropic, appelé directement ou par OpenRouter. La question et les passages trouvés lui sont envoyés.\n\nSans clé d’embeddings, la recherche de l’assistant reste en plein texte : rien ne part chez Mistral.\n\n## Ce que voit l’assistant\n\nUniquement ce que ton site publie : il lit le corpus du site public. Une page qui n’est pas publiée n’existe pas pour lui. Il ne peut ni naviguer sur le web, ni agir : il lit des passages et écrit une réponse.\n\n## Supprimer\n\nSupprimer un projet dans la console efface son index, ses pages et son journal. Le site publié et ton dépôt ne sont pas touchés."},{"path":"/explications/fonctionnement/","title":"Comment ça marche","description":"Du push au site publié, puis à l'assistant qui répond.","version":null,"markdown":"Docs tient en trois pièces : un modèle de site, Host qui le publie, et la console qui l’indexe pour l’assistant.\n\n## 1. Le modèle de site\n\nLe paquet `@hgdc/docs` contient un site Astro Starlight complet. `hgdc-docs build` lit ton `docs.json`, prend tes pages MDX et construit un site statique. Rien ne tourne côté serveur : le site est rapide et ne tombe pas en panne avec la console.\n\nPendant le build, chaque page est aussi convertie en Markdown à partir du HTML final. Les composants sont donc déjà rendus : ce que lit un agent est exactement ce que voit un visiteur.\n\n## 2. La publication par Host\n\nHost lance le build dans GitHub Actions à chaque push, puis sert le dossier `dist/` sur ton domaine. La doc est une source comme une autre : préversion par branche, retour arrière, domaine.\n\n## 3. L’indexation par la console\n\nLa console relit `/_hgdc/corpus.json` sur le site publié : tous les quarts d’heure, ou quand tu cliques sur **Synchroniser**. Elle vérifie que le corpus porte bien l’identifiant du projet, puis :\n\n1. découpe chaque page en passages, un par section (titre `##` ou plus fin) ;\n2. compare avec l’index existant, passage par passage : seuls les passages nouveaux sont traités ;\n3. calcule leur représentation vectorielle (embedding), qui permet de retrouver une reformulation ;\n4. supprime les passages qui ne sont plus publiés.\n\nUn build identique au précédent ne change rien à l’index.\n\n## 4. La réponse\n\nUne question passe par deux recherches : par mots (les termes exacts, comme `docs.json`) et par sens (les reformulations). Les deux classements sont fusionnés, les six meilleurs passages sont donnés au modèle Claude, qui répond en citant ceux qu’il utilise.\n\n> **Note**\n>\n> L’index d’un projet est fermé aux autres : une recherche ne voit que les passages de son propre projet, vérifiés deux fois."},{"path":"/guides/agents/","title":"llms.txt et MCP","description":"Rendre la doc lisible par les outils d'IA, avec llms.txt, des pages en Markdown et un serveur MCP.","version":null,"markdown":"Les assistants de code et les agents lisent la documentation pour écrire du code juste. Docs leur donne trois portes d’entrée, sans rien à configurer.\n\n## llms.txt\n\nChaque site publie à sa racine :\n\n- `/llms.txt` : l’index de la doc au format [llmstxt.org](https://llmstxt.org), une ligne par page avec sa description, rangées par onglet et par groupe. Le même fichier répond aussi sur `/.well-known/llms.txt`.\n- `/llms-full.txt` : toute la doc en un seul fichier Markdown.\n\n## Une page en Markdown\n\nChaque page existe aussi en Markdown à la même adresse suivie de `.md` : `/guides/publier.md` pour `/guides/publier/`. Les pages l’annoncent dans leur `<head>` avec `rel=\"alternate\"`.\n\nEn haut de chaque page, **Copier pour un LLM** copie ce Markdown. Le menu à côté ouvre la page dans Claude ou ChatGPT, ou affiche le Markdown.\n\n## Serveur MCP\n\nChaque projet a un serveur MCP en lecture seule. L’adresse est dans l’aperçu du projet, dans la console :\n\n```text\nhttps://docs.hgdc.ch/mcp/<identifiant du projet>\n```\n\nDans Claude Code :\n\n```bash\nclaude mcp add --transport http acme-docs https://docs.hgdc.ch/mcp/<identifiant du projet>\n```\n\nDans Cursor (`.cursor/mcp.json`) :\n\n```json\n{ \"mcpServers\": { \"acme-docs\": { \"url\": \"https://docs.hgdc.ch/mcp/<identifiant du projet>\" } } }\n```\n\nDans VS Code (`.vscode/mcp.json`) :\n\n```json\n{ \"servers\": { \"acme-docs\": { \"type\": \"http\", \"url\": \"https://docs.hgdc.ch/mcp/<identifiant du projet>\" } } }\n```\n\nL’aperçu du projet donne ces lignes déjà remplies. Le serveur reste ouvert quand l’assistant du site est coupé : il ne fait que chercher, sans modèle.\n\nLe serveur propose trois outils :\n\n| Outil | Rôle |\n| ------------- | -------------------------------------------------------------------------------------------- |\n| `search_docs` | Cherche dans la doc et rend les passages les plus proches, avec l’adresse de chaque section. |\n| `get_page` | Rend une page complète en Markdown, à partir de son chemin. |\n| `list_pages` | Liste les pages avec leur titre et leur chemin. |\n\nLe détail du protocole est dans la [référence MCP](/reference/mcp/)."},{"path":"/guides/assistant/","title":"L'assistant IA","description":"Ce que fait l'assistant, d'où viennent ses réponses, et comment le régler.","version":null,"markdown":"L’assistant ajoute un bouton **Demander à l’IA** en bas à droite de chaque page, et `Ctrl I` l’ouvre au clavier. Le visiteur pose sa question ; l’assistant cherche dans ta doc et répond en quelques phrases, avec des renvois numérotés vers les sections utilisées.\n\n## D’où viennent les réponses\n\n1. La question est cherchée dans les pages publiées de ta doc, et seulement là.\n2. Les passages les plus proches sont donnés au modèle Claude, avec une consigne : répondre à partir de ces passages, citer chaque affirmation, ne rien inventer.\n3. Seuls les passages réellement cités deviennent des sources sous la réponse.\n\nSi rien dans la doc ne correspond, l’assistant répond qu’il ne trouve pas, sans appeler le modèle. Une réponse sans aucune source est traitée de la même façon.\n\n> **Les réponses restent générées par IA**\n>\n> Le widget le rappelle sous chaque échange. Une source citée se vérifie en un clic.\n\n## Activer et désactiver\n\nL’assistant est actif dès que `docs.json` porte l’identifiant `project` et que la console a indexé le site. Pour le couper :\n\n- dans la console, **Assistant › Assistant sur le site** (effet immédiat) ;\n- ou dans `docs.json`, `\"assistant\": { \"enabled\": false }` (au prochain build).\n\n## Quota\n\nChaque organisation dispose d’un nombre de questions par mois, toutes docs confondues : 500 dans l’offre de départ. La console affiche la consommation. Au-delà, l’assistant répond qu’il a atteint sa limite, et HGDC relève le plafond sur demande.\n\nPour éviter qu’un seul visiteur ou un script épuise le quota, chaque visiteur a droit à 6 questions par minute et 40 par jour, et chaque doc à 30 par minute et 200 par jour. HGDC relève le plafond journalier d’une doc sur demande.\n\n## Tester et lire le journal\n\nEn haut de la page **Assistant**, les 30 derniers jours : nombre de questions, part de réponses sourcées, et les **questions sans réponse**, regroupées et classées de la plus posée à la moins posée. Chacune ouvre le journal filtré : c’est la liste des pages à écrire.\n\n**Assistant › Tester l’assistant** pose une question comme un visiteur. Le **journal** garde les questions des 90 derniers jours avec leur état :\n\n| État | Ce que ça veut dire |\n| -------- | ----------------------------------------------------------------- |\n| Répondu | L’assistant a répondu en citant la doc. |\n| Hors doc | Rien dans la doc ne répond. Souvent une page à écrire. |\n| Erreur | Le modèle n’a pas répondu ; le visiteur a été invité à réessayer. |\n\nAu-dessus du journal, cherche une question par ses mots, ou filtre par état : **État › Hors doc** ne garde que les questions sans réponse. Les filtres restent dans l’adresse de la page : tu peux la garder en favori ou l’envoyer à un collègue.\n\n> **Astuce**\n>\n> Lis les questions « hors doc » une fois par semaine : c’est la liste des pages qui manquent, écrite par tes visiteurs."},{"path":"/guides/composants/","title":"Composants","description":"Encadrés, étapes, cartes, onglets et accordéons, disponibles dans chaque page sans import.","version":null,"markdown":"Ces composants s’utilisent directement dans une page `.mdx`, sans `import`. Ils portent les mêmes noms que chez Mintlify.\n\n## Encadrés\n\n> **Note**\n>\n> Une information utile à côté du texte.\n\n> **Astuce**\n>\n> Un conseil qui fait gagner du temps.\n\n> **Attention**\n>\n> Un piège à éviter.\n\n> **Danger**\n>\n> Une action qui détruit des données.\n\n```mdx\n<Note>Une information utile à côté du texte.</Note>\n<Tip title=\"Astuce\">Un conseil qui fait gagner du temps.</Tip>\n<Warning>Un piège à éviter.</Warning>\n<Danger>Une action qui détruit des données.</Danger>\n```\n\n`<Info>` et `<Check>` existent aussi. Chacun accepte un `title`.\n\n## Étapes\n\n1. **Installer**\n\n Ajoute le paquet.\n\n2. **Configurer**\n\n Écris `docs.json`.\n\n```mdx\n<Steps>\n <Step title=\"Installer\">Ajoute le paquet.</Step>\n <Step title=\"Configurer\">Écris `docs.json`.</Step>\n</Steps>\n```\n\n## Cartes\n\n[Avec un lien](/guides/publier/)\n\n[Toute la carte est cliquable.](/guides/publier/)\n\nSans lien\n\nPour présenter une idée.\n\n```mdx\n<CardGroup cols={2}>\n <Card title=\"Avec un lien\" href=\"/guides/publier/\">Toute la carte est cliquable.</Card>\n <Card title=\"Sans lien\">Pour présenter une idée.</Card>\n</CardGroup>\n```\n\n`cols` va de 1 à 4. Sur téléphone, les cartes passent l’une sous l’autre.\n\n## Onglets\n\n```bash\nnpm install --save-dev @hgdc/docs\n```\n\n```bash\nbun add --dev @hgdc/docs\n```\n\n```mdx\n<Tabs>\n <Tab title=\"npm\">…</Tab>\n <Tab title=\"Bun\">…</Tab>\n</Tabs>\n```\n\n## Accordéons\n\nFaut-il un compte HGDC pour écrire ?\n\nNon. Le site se construit sans compte. Le compte sert à la console : publication suivie et assistant.\n\nPuis-je garder mes composants Mintlify ?\n\nCeux de cette page, oui. Les autres s’affichent comme du texte : remplace-les ou écris-nous.\n\n```mdx\n<AccordionGroup>\n <Accordion title=\"Question\">Réponse.</Accordion>\n</AccordionGroup>\n```\n\n## Dans le Markdown publié\n\nChaque composant a une forme Markdown : un encadré devient une citation qui commence par son titre en gras, une étape devient un élément de liste numérotée. C’est cette forme que lisent l’assistant, `llms.txt` et les outils d’IA."},{"path":"/guides/ecrire/","title":"Écrire en MDX","description":"Titres, liens, images, code et métadonnées d'une page.","version":null,"markdown":"Chaque page est un fichier `.mdx` (ou `.md`) : du Markdown, plus des composants. Le chemin du fichier donne l’adresse de la page : `guides/publier.mdx` devient `/guides/publier/`.\n\n## Métadonnées\n\nLe haut de la page, entre deux lignes `---`, décrit la page.\n\n```mdx\n---\ntitle: Publier avec Host\nsidebarTitle: Publier\ndescription: Mettre la doc en ligne et brancher l'assistant.\n---\n```\n\n| Champ | Rôle |\n| -------------- | ---------------------------------------------------------------------------- |\n| `title` | Titre de la page, obligatoire. Aussi le titre de l’onglet du navigateur. |\n| `sidebarTitle` | Libellé plus court dans la barre latérale. |\n| `description` | Une phrase. Reprise par les moteurs de recherche, `llms.txt` et l’assistant. |\n\n## Titres et sections\n\nCommence les sections à `##`. Chaque titre reçoit une ancre (`#publier-avec-host`) : c’est elle que l’assistant cite dans ses sources. Un titre clair donne donc une source claire.\n\n> **Astuce**\n>\n> Une section par question qu’on te pose. L’assistant découpe la doc par titre : une section courte et nommée simplement est retrouvée plus souvent.\n\n## Liens\n\nLes liens internes s’écrivent avec le chemin de la page : `[Publier](/guides/publier/)`. Pour une section : `[le domaine](/guides/publier/#ton-domaine)`.\n\n## Images\n\nRange les images dans `images/`, `img/`, `logo/`, `assets/` ou `static/`, et cite-les avec un chemin qui commence par `/`. Seuls les médias de ces dossiers, le logo et le favicon de `docs.json`, et tout le dossier `public/` (servi à la racine) sont publiés : un fichier oublié ailleurs dans le dépôt ne part jamais en ligne.\n\n```mdx\n![Le tableau de bord](/images/tableau-de-bord.png)\n```\n\nPour une légende, entoure l’image d’un cadre :\n\n```mdx\n<Frame caption=\"Le tableau de bord après la première publication\">\n ![Le tableau de bord](/images/tableau-de-bord.png)\n</Frame>\n```\n\n## Code\n\nLes blocs de code sont colorés et ont un bouton Copier. Indique le langage après les trois accents graves :\n\n````mdx\n```bash\nnpm run build\n```\n````\n\n## Ce qui n’est pas publié\n\nLes fichiers qui commencent par `_` (comme `_brouillon.mdx`), `README.md`, `CHANGELOG.md` et les dossiers `node_modules`, `dist` ou cachés ne deviennent pas des pages."},{"path":"/guides/navigation/","title":"Navigation, onglets et versions","description":"Organiser les pages en groupes, en onglets et en versions dans docs.json.","version":null,"markdown":"La navigation se décrit dans `docs.json`, sous `navigation`. Choisis **une** forme : `pages`, `groups`, `tabs` ou `versions`.\n\n## Pages et groupes\n\nPour une petite doc, une liste de groupes suffit. Un groupe peut contenir d’autres groupes.\n\n```json\n{\n \"navigation\": {\n \"groups\": [\n { \"group\": \"Démarrer\", \"pages\": [\"index\", \"installation\"] },\n {\n \"group\": \"Guides\",\n \"pages\": [\"guides/facturer\", { \"group\": \"Avancé\", \"expanded\": false, \"pages\": [\"guides/webhooks\"] }]\n }\n ]\n }\n}\n```\n\nUne page s’écrit sans extension ni `/` au début : `guides/facturer` pour `guides/facturer.mdx`. Une page citée mais absente fait échouer le build, avec la liste de ce qui manque.\n\n## Onglets\n\nAu-delà d’une vingtaine de pages, sépare les grandes parties en onglets : guides, référence, explications. Les onglets s’affichent en haut de la barre latérale ; chacun a ses propres groupes.\n\n```json\n{\n \"navigation\": {\n \"tabs\": [\n { \"tab\": \"Guides\", \"groups\": [{ \"group\": \"Démarrer\", \"pages\": [\"index\"] }] },\n { \"tab\": \"Référence\", \"groups\": [{ \"group\": \"API\", \"pages\": [\"reference/api\"] }] }\n ]\n }\n}\n```\n\n> **Astuce**\n>\n> Cette doc suit le découpage Diataxis : des guides pour faire, une référence pour vérifier, des explications pour comprendre.\n\n## Versions\n\nQuand ton produit garde plusieurs versions en service, chacune peut avoir sa doc. Le visiteur passe de l’une à l’autre avec un menu en haut de la barre latérale.\n\n```json\n{\n \"navigation\": {\n \"versions\": [\n { \"version\": \"v2\", \"default\": true, \"groups\": [{ \"group\": \"Démarrer\", \"pages\": [\"index\"] }] },\n { \"version\": \"v1\", \"groups\": [{ \"group\": \"Démarrer\", \"pages\": [\"v1/index\"] }] }\n ]\n }\n}\n```\n\nLa version par défaut est celle que lisent l’assistant en priorité et l’index `llms.txt`. Les autres y figurent dans une section « Optional ».\n\n## Précédent et suivant\n\nEn bas de chaque page, les liens Précédent et Suivant suivent l’ordre de la navigation, sans sortir de l’onglet ouvert."},{"path":"/guides/publier/","title":"Publier avec Host","description":"Mettre la doc en ligne avec Host, activer Docs en un clic et brancher l'assistant.","version":null,"markdown":"Host construit ton site à chaque push et le sert depuis son serveur. La console `docs.hgdc.ch` relit ensuite le site publié pour indexer l’assistant.\n\n## Mettre la doc en ligne\n\n1. **Importer le dépôt**\n\n Dans Host, crée un projet à partir de ton dépôt GitHub. Host reconnaît une doc Docs (un `docs.json` et le paquet `@hgdc/docs` dans `package.json`) : il la construit avec `hgdc-docs build` et publie le dossier `dist/`. Aucun fichier de configuration à ajouter.\n\n2. **Fusionner la pull request de Host**\n\n Host propose une pull request qui ajoute son workflow de déploiement. Fusionne-la : la doc part en production.\n\n3. **Pousser**\n\n Chaque push sur la branche principale publie le site en production. Les autres branches ont leur préversion.\n\n## Activer Docs\n\n1. **Cliquer sur « Activer Docs »**\n\n Sur la vue d’ensemble du projet dans Host, la carte **Assistant et recherche avec Docs** propose **Activer Docs**. Host crée le projet dans la console, dans la même organisation. Il faut être admin de l’organisation, et la doc doit déjà être en production.\n\n2. **Publier une fois de plus**\n\n Pousse une modification. Ce build reçoit l’identifiant du projet de la console : le site le porte sans que tu le recopies dans `docs.json`.\n\n3. **Laisser faire**\n\n À chaque mise en production, Host prévient la console, qui relit `/_hgdc/corpus.json` et indexe les pages en quelques secondes. La carte de Host affiche **Docs est activé** et mène à la console. En plus, la console relit le site tous les quarts d’heure : un appel perdu se rattrape seul.\n\n> **Note**\n>\n> Le projet apparaît dans la console dès que tu t’y connectes avec ton compte HGDC. Ses réglages (domaines, assistant) s’y changent comme pour n’importe quel projet.\n\n## Ton domaine\n\nLe domaine se branche dans Host, comme pour n’importe quel site : Host annonce la nouvelle adresse à la console à la mise en production suivante. Si la doc répond sur plusieurs adresses (`docs.acme.ch` et `aide.acme.ch`), ajoute les autres dans **Réglages › Domaines** : l’assistant ne répond qu’aux pages servies par ces adresses.\n\n## Relier un projet existant\n\nLe dossier `dist/` est un site statique, il se dépose chez n’importe quel hébergeur. Hors de Host, ou pour un projet créé directement dans la console, relie la doc à la main.\n\n1. **Créer le projet dans la console**\n\n Sur `docs.hgdc.ch`, ouvre ton organisation, puis **Nouveau projet**. Donne l’adresse de production du site, par exemple `https://docs.acme.ch`.\n\n2. **Copier l'identifiant dans docs.json**\n\n La console affiche une ligne à copier. Ajoute-la dans `docs.json`, puis publie :\n\n ```json\n { \"project\": \"k57a8m2x9q4n1b3c5d7e9f0g2h4j6k8m\" }\n ```\n\n Sans cet identifiant, le site fonctionne mais l’assistant reste caché, et la console refuse d’indexer un site qui ne porte pas le sien.\n\n3. **Synchroniser**\n\n Clique sur **Synchroniser** dans l’aperçu du projet. La console lit `/_hgdc/corpus.json` sur ton site et indexe chaque page, puis relit le site tous les quarts d’heure.\n\n> **Adresse publique seulement**\n>\n> La console n’accepte qu’une adresse `https://` avec un nom de domaine public. Elle ne suit pas les redirections : donne l’adresse finale du site."},{"path":"/guides/theme/","title":"Thème et logo","description":"Poser ta couleur, ton logo et ton favicon dans docs.json.","version":null,"markdown":"Le site suit la DA de HGDC par défaut : gris neutres, coins arrondis, Inter pour le texte. Tu changes trois choses : la couleur, le logo et le favicon.\n\n## Couleur\n\n```json\n{ \"colors\": { \"primary\": \"#0f766e\" } }\n```\n\nLa couleur sert aux liens, à l’onglet actif et aux renvois de l’assistant. Sa teinte est gardée ; sa luminosité est ajustée pour que les liens restent lisibles (contraste de 4,5:1 au moins), en clair comme en sombre.\n\nPour une couleur différente en mode sombre, ajoute `\"dark\": \"#5eead4\"`.\n\n> **Note**\n>\n> Dans la console, **Réglages › Thème** montre l’effet d’une couleur en clair et en sombre, son contraste sur un fond blanc, et prépare la ligne à copier dans `docs.json`.\n\n## Logo\n\n```json\n{ \"logo\": { \"light\": \"/images/logo-clair.svg\", \"dark\": \"/images/logo-sombre.svg\" } }\n```\n\nLe chemin part de la racine du dossier de la doc. Un SVG carré ou large, de 32 pixels de haut environ, rend le mieux. Une seule image : `\"logo\": \"/images/logo.svg\"`.\n\n## Favicon\n\n```json\n{ \"favicon\": \"/images/favicon.svg\" }\n```\n\nSans favicon, le site n’en annonce pas d’autre que `/favicon.svg` s’il existe."},{"path":"/","title":"Bienvenue dans Docs","description":"Ta documentation en MDX, publiée par Host, avec recherche, llms.txt et un assistant IA qui cite ses sources.","version":null,"markdown":"Docs transforme un dossier de pages MDX en site de documentation. Tu écris dans ton dépôt Git, Host publie le site à chaque push, et la console `docs.hgdc.ch` branche un assistant qui répond à tes visiteurs à partir de ta doc, et de rien d’autre.\n\n[Ta première doc](/demarrer/premiere-doc/)\n\n[Un dossier, un fichier `docs.json` et une page : ton site tourne en local en cinq minutes.](/demarrer/premiere-doc/)\n\n[Publier avec Host](/guides/publier/)\n\n[Relie le dépôt à Host : chaque push met le site à jour.](/guides/publier/)\n\n[L'assistant IA](/guides/assistant/)\n\n[Il répond aux questions de tes visiteurs et cite les pages qu’il a utilisées.](/guides/assistant/)\n\n[Pour les agents](/guides/agents/)\n\n[`llms.txt`, une version Markdown de chaque page et un serveur MCP en lecture.](/guides/agents/)\n\n## Ce que tu obtiens\n\n- **Un site rapide et lisible** : navigation par onglets et groupes, versions, mode clair et sombre, mise en page pensée pour le téléphone.\n- **La recherche** : `Ctrl K` sur chaque page, sans service externe. L’index est construit avec le site.\n- **Tes couleurs** : une couleur dans `docs.json` suffit. Le contraste des liens est ajusté pour rester lisible.\n- **Un assistant sourcé** : il cherche dans tes pages, répond en quelques phrases et renvoie vers les sections exactes. S’il ne trouve rien, il le dit.\n- **Une doc lisible par les IA** : `llms.txt`, `llms-full.txt`, un bouton « Copier pour un LLM » et un serveur MCP.\n\n## Compatible avec Mintlify\n\nLe fichier `docs.json` reprend celui de Mintlify : nom, couleurs, logo, navigation en onglets, groupes et versions. Les composants les plus courants (`<Note>`, `<Steps>`, `<Card>`, `<Tabs>`…) fonctionnent sans import. Une doc Mintlify se reprend en général sans réécrire les pages.\n\n> **Tout reste en Suisse quand c'est possible**\n>\n> Le site est servi par Host. Les questions des visiteurs sont gardées 90 jours au plus. Voir [Données et confidentialité](/explications/donnees/)."},{"path":"/reference/api-assistant/","title":"API de l'assistant","description":"La requête que le widget envoie, la réponse et les codes d'erreur.","version":null,"markdown":"Le widget du site appelle une seule route. Tu peux l’appeler toi-même pour intégrer l’assistant dans ton application, depuis une page servie par une adresse déclarée dans la console.\n\n## Requête\n\n```http\nPOST https://docs.hgdc.ch/api/v1/ask\nContent-Type: application/json\nOrigin: https://docs.acme.ch\n```\n\n```json\n{\n \"project\": \"k57a8m2x9q4n1b3c5d7e9f0g2h4j6k8m\",\n \"question\": \"Comment publier ma doc ?\",\n \"page\": \"/guides/publier/\",\n \"previous\": [\"j97f2k8m1q4n6b3c5d7e9f0g2h4j6k8m\"]\n}\n```\n\n| Champ | Rôle |\n| ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |\n| `project` | Identifiant du projet. |\n| `question` | 2 à 1 000 caractères. |\n| `page` | Chemin de la page ouverte. Ses passages sont légèrement favorisés. |\n| `previous` | Les `id` des réponses précédentes de la conversation, 3 au plus. L’assistant relit lui-même ce qu’il a répondu, dans les deux dernières heures. |\n\nL’en-tête `Origin` doit être l’adresse du site ou un des domaines déclarés dans **Réglages › Domaines**. Chaque visiteur a droit à 6 questions par minute et 100 par jour.\n\n## Réponse\n\n```json\n{\n \"id\": \"j97f…\",\n \"status\": \"answered\",\n \"answer\": \"Importe le dépôt dans Host[^1], puis synchronise le projet dans la console[^2].\",\n \"sources\": [\n { \"n\": 1, \"title\": \"Publier avec Host\", \"section\": \"Avec Host\", \"url\": \"https://docs.acme.ch/guides/publier/#avec-host\" },\n { \"n\": 2, \"title\": \"Publier avec Host\", \"section\": \"Relier la console\", \"url\": \"https://docs.acme.ch/guides/publier/#relier-la-console\" }\n ]\n}\n```\n\n`answer` est du Markdown simple ; `[^n]` renvoie à la source `n`. `status` vaut `no_answer` quand la doc ne répond pas : `sources` est alors vide.\n\n## Erreurs\n\n| Code HTTP | `error.code` | Quand |\n| --------- | -------------------- | --------------------------------------------------- |\n| 400 | `invalid_request` | Corps illisible ou question trop courte. |\n| 403 | `origin_not_allowed` | La page n’est pas servie par une adresse du projet. |\n| 403 | `assistant_disabled` | L’assistant est coupé dans la console. |\n| 404 | `project_not_found` | Identifiant inconnu. |\n| 409 | `not_indexed` | Le site n’a pas encore été synchronisé. |\n| 429 | `rate_limited` | Trop de questions en une minute. |\n| 429 | `quota_exceeded` | Le quota mensuel de l’organisation est atteint. |\n| 503 | `unavailable` | Le modèle ne répond pas. Réessayer plus tard. |\n\nChaque erreur porte aussi `error.message`, une phrase en français à montrer telle quelle."},{"path":"/reference/cli/","title":"La commande hgdc-docs","description":"Les commandes dev, build et preview, et les variables d'environnement du build.","version":null,"markdown":"`hgdc-docs` est installée avec le paquet `@hgdc/docs`. Elle se lance depuis le dossier de la doc, ou avec le chemin du dossier en argument.\n\n## Commandes\n\n| Commande | Effet |\n| ------------------- | ---------------------------------------------------------------------------------------------------------- |\n| `hgdc-docs dev` | Site local sur `http://localhost:4321`, rechargé à chaque modification. |\n| `hgdc-docs build` | Site statique dans `dist/`, avec la recherche, `llms.txt`, les pages Markdown et le corpus de l’assistant. |\n| `hgdc-docs preview` | Sert le dernier build, pour vérifier avant de pousser. |\n\nOptions : `--port 4000` change le port de `dev` et `preview`, `--help` affiche l’aide.\n\n## Variables d’environnement\n\n| Variable | Rôle |\n| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `HGDC_DOCS_SITE` | Adresse publique du site (`https://docs.acme.ch`). Rend les liens de `llms.txt` absolus et produit le sitemap. Sur Host, l’adresse de production est reprise seule. |\n| `HGDC_DOCS_OUT` | Dossier de sortie, `dist/` par défaut. |\n| `HGDC_DOCS_API` | API de l’assistant, `https://docs.hgdc.ch` par défaut. |\n\n## Ce que contient dist/\n\n| Fichier | Contenu |\n| --------------------------------------------------- | -------------------------------------------------------------- |\n| `index.html`, `<page>/index.html` | Les pages du site. |\n| `<page>.md` | Chaque page en Markdown. |\n| `llms.txt`, `llms-full.txt`, `.well-known/llms.txt` | L’index et la doc complète pour les agents. |\n| `pagefind/` | L’index de la recherche. |\n| `_hgdc/corpus.json` | Le contenu publié, lu par la console pour indexer l’assistant. |"},{"path":"/reference/docs-json/","title":"docs.json","description":"Tous les champs du fichier de configuration d'un site Docs.","version":null,"markdown":"`docs.json` vit à la racine du dossier de la doc. Il reprend le format de Mintlify : les champs que Docs ne gère pas sont acceptés et ignorés. Pour l’autocomplétion dans ton éditeur, ajoute `\"$schema\": \"https://docs.hgdc.ch/docs.schema.json\"`.\n\n## Champs\n\n| Champ | Type | Obligatoire | Rôle |\n| -------------------- | --------------------------------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `name` | texte | oui | Nom de la doc, en tête du site et dans `llms.txt`. 80 caractères au plus. |\n| `description` | texte | non | Une phrase de présentation. |\n| `navigation` | objet | oui | Pages, groupes, onglets ou versions. Voir [Navigation](/guides/navigation/). |\n| `project` | texte | non | Identifiant du projet dans la console. Active l’assistant et l’indexation. |\n| `language` | `fr`, `en`, `de`, `it` | non | Langue de l’interface du site. `fr` par défaut. |\n| `base` | texte | non | Sous-chemin où la doc est servie, par exemple `/docs` quand ton application la publie derrière un proxy (`https://app.acme.ch/docs`). Liens, images, recherche, `llms.txt` et pages `.md` le portent ; le site est écrit dans `dist/docs/`. Écris tes liens depuis la racine de la doc (`/guides/publier/`) : le sous-chemin est ajouté au build. |\n| `colors.primary` | couleur `#rrggbb` | non | Couleur des liens et des éléments actifs. |\n| `colors.dark` | couleur `#rrggbb` | non | La même, en mode sombre. |\n| `logo` | chemin, ou `{ light, dark }` | non | Logo affiché en tête. |\n| `favicon` | chemin | non | Icône de l’onglet du navigateur. |\n| `navbar.links` | liste de `{ label, href }` | non | Jusqu’à 5 liens dans la barre du haut (adresses complètes). |\n| `navbar.primary` | `{ label, href }` | non | Bouton mis en avant à droite de la barre du haut. |\n| `footer.socials` | objet | non | Liens vers tes réseaux : `linkedin`, `github`, `gitlab`, `x`, `youtube`, `instagram`, `facebook`, `discord`, `mastodon`, `bluesky`, `website`. |\n| `redirects` | liste de `{ source, destination, permanent }` | non | Anciennes adresses qui mènent aux nouvelles. `source` est un chemin du site (`/guides/ancien`), `destination` un chemin ou une adresse `https://`. `permanent: false` pour une redirection temporaire. 500 au plus. |\n| `assistant.enabled` | oui / non | non | `false` cache l’assistant du site. |\n| `assistant.endpoint` | adresse | non | API de l’assistant, à ne changer que pour un environnement de test. |\n\n## Navigation\n\nQuatre formes, une seule à la fois :\n\n| Forme | Exemple |\n| ---------- | --------------------------------------------------------- |\n| `pages` | `[\"index\", \"installation\"]` |\n| `groups` | `[{ \"group\": \"Démarrer\", \"pages\": [\"index\"] }]` |\n| `tabs` | `[{ \"tab\": \"Guides\", \"groups\": [...] }]` |\n| `versions` | `[{ \"version\": \"v2\", \"default\": true, \"groups\": [...] }]` |\n\nUn groupe accepte `expanded: false` pour être replié par défaut, et peut contenir des groupes.\n\n## Erreurs\n\nUn `docs.json` invalide fait échouer le build avec la liste des problèmes, par exemple :\n\n```text\ndocs.json invalide :\n- colors.primary : couleur attendue au format #rrggbb\n- navigation : utiliser une seule forme parmi versions, tabs, groups ou pages\n```"},{"path":"/reference/mcp/","title":"Serveur MCP","description":"Transport, méthodes et outils du serveur MCP en lecture d'un projet.","version":null,"markdown":"Le serveur suit le [Model Context Protocol](https://modelcontextprotocol.io), transport Streamable HTTP, sans session : chaque requête est indépendante.\n\n```text\nPOST https://docs.hgdc.ch/mcp/<identifiant du projet>\nContent-Type: application/json\nAccept: application/json, text/event-stream\n```\n\nIl répond en JSON (`application/json`), jamais en flux. `GET` et `DELETE` répondent 405. Versions du protocole acceptées : `2025-11-25`, `2025-06-18`, `2025-03-26`.\n\n## Méthodes\n\n| Méthode | Réponse |\n| ------------ | --------------------------------------------------------- |\n| `initialize` | Nom du serveur, capacités (`tools`) et consignes d’usage. |\n| `ping` | Objet vide. |\n| `tools/list` | Les trois outils ci-dessous. |\n| `tools/call` | Le résultat de l’outil, en texte. |\n\nUne notification (message sans `id`) reçoit un 202 sans corps.\n\n## Outils\n\n### search_docs\n\n| Paramètre | Type | Rôle |\n| --------- | -------------- | --------------------------------- |\n| `query` | texte | Question ou mots-clés. |\n| `limit` | entier, 1 à 10 | Nombre de passages, 5 par défaut. |\n\nRend les passages trouvés, chacun avec son titre, sa section, son adresse et son texte.\n\n### get_page\n\n| Paramètre | Type | Rôle |\n| --------- | ----- | ---------------------------------------------------------------- |\n| `path` | texte | Chemin de la page (`/guides/publier/`), ou son adresse complète. |\n\nRend la page en Markdown, précédée de son adresse.\n\n### list_pages\n\nSans paramètre. Rend la liste des pages publiées.\n\n## Limites\n\nLe serveur est public et en lecture seule : il ne donne accès qu’à ce que le site publie déjà. Chaque projet accepte 300 requêtes par minute, chaque visiteur 60. Au-delà, la réponse est un 429."}]}
@@ -1,4 +1,4 @@
1
- <!DOCTYPE html><html lang="fr-CH" dir="ltr" data-theme="dark" data-has-toc data-has-sidebar class="astro-lnvyiehd"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><title>Ta première doc en cinq minutes | HGDC Docs</title><style>:root{--sl-color-accent-low:#282041;--sl-color-accent:#9258ff;--sl-color-accent-high:#e8b7ff;--hgdc-on-accent:#000000;}:root[data-theme="light"]{--sl-color-accent-low:#f1e9ff;--sl-color-accent:#7c3aed;--sl-color-accent-high:#4e00ae;--hgdc-on-accent:#ffffff;}</style><link rel="shortcut icon" href="/images/favicon.svg" type="image/svg+xml"/><meta name="generator" content="Astro v7.3.8"/><meta name="generator" content="Starlight v0.42.6"/><meta property="og:title" content="Ta première doc en cinq minutes"/><meta property="og:type" content="article"/><meta property="og:locale" content="fr-CH"/><meta property="og:description" content="Créer le dossier, écrire docs.json et une page, puis voir le site en local."/><meta property="og:site_name" content="HGDC Docs"/><meta name="twitter:card" content="summary_large_image"/><meta name="description" content="Créer le dossier, écrire docs.json et une page, puis voir le site en local."/><link rel="alternate" type="text/markdown" href="/demarrer/premiere-doc.md"><link rel="describedby" type="text/markdown" href="/llms.txt"><script>
1
+ <!DOCTYPE html><html lang="fr-CH" dir="ltr" data-theme="dark" data-has-toc data-has-sidebar class="astro-ymcefofk"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><title>Ta première doc en cinq minutes | Docs</title><style>:root{--sl-color-accent-low:#282041;--sl-color-accent:#9258ff;--sl-color-accent-high:#e8b7ff;--hgdc-on-accent:#000000;}:root[data-theme="light"]{--sl-color-accent-low:#f1e9ff;--sl-color-accent:#7c3aed;--sl-color-accent-high:#4e00ae;--hgdc-on-accent:#ffffff;}</style><link rel="shortcut icon" href="/images/favicon.svg" type="image/svg+xml"/><meta name="generator" content="Astro v7.3.8"/><meta name="generator" content="Starlight v0.42.6"/><meta property="og:title" content="Ta première doc en cinq minutes"/><meta property="og:type" content="article"/><meta property="og:locale" content="fr-CH"/><meta property="og:description" content="Créer le dossier, écrire docs.json et une page, puis voir le site en local."/><meta property="og:site_name" content="Docs"/><meta name="twitter:card" content="summary_large_image"/><meta name="description" content="Créer le dossier, écrire docs.json et une page, puis voir le site en local."/><link rel="alternate" type="text/markdown" href="/demarrer/premiere-doc.md"><link rel="describedby" type="text/markdown" href="/llms.txt"><script>
2
2
  window.StarlightThemeProvider = (() => {
3
3
  const storedTheme =
4
4
  typeof localStorage !== 'undefined' && localStorage.getItem('starlight-theme');
@@ -24,9 +24,9 @@
24
24
  },
25
25
  };
26
26
  })();
27
- </script><template id="theme-icons"><svg aria-hidden="true" class="light astro-xhs3u4tj" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M5 12a1 1 0 0 0-1-1H3a1 1 0 0 0 0 2h1a1 1 0 0 0 1-1Zm.64 5-.71.71a1 1 0 0 0 0 1.41 1 1 0 0 0 1.41 0l.71-.71A1 1 0 0 0 5.64 17ZM12 5a1 1 0 0 0 1-1V3a1 1 0 0 0-2 0v1a1 1 0 0 0 1 1Zm5.66 2.34a1 1 0 0 0 .7-.29l.71-.71a1 1 0 1 0-1.41-1.41l-.66.71a1 1 0 0 0 0 1.41 1 1 0 0 0 .66.29Zm-12-.29a1 1 0 0 0 1.41 0 1 1 0 0 0 0-1.41l-.71-.71a1.004 1.004 0 1 0-1.43 1.41l.73.71ZM21 11h-1a1 1 0 0 0 0 2h1a1 1 0 0 0 0-2Zm-2.64 6A1 1 0 0 0 17 18.36l.71.71a1 1 0 0 0 1.41 0 1 1 0 0 0 0-1.41l-.76-.66ZM12 6.5a5.5 5.5 0 1 0 5.5 5.5A5.51 5.51 0 0 0 12 6.5Zm0 9a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7Zm0 3.5a1 1 0 0 0-1 1v1a1 1 0 0 0 2 0v-1a1 1 0 0 0-1-1Z"/></svg><svg aria-hidden="true" class="dark astro-xhs3u4tj" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21.64 13a1 1 0 0 0-1.05-.14 8.049 8.049 0 0 1-3.37.73 8.15 8.15 0 0 1-8.14-8.1 8.59 8.59 0 0 1 .25-2A1 1 0 0 0 8 2.36a10.14 10.14 0 1 0 14 11.69 1 1 0 0 0-.36-1.05Zm-9.5 6.69A8.14 8.14 0 0 1 7.08 5.22v.27a10.15 10.15 0 0 0 10.14 10.14 9.784 9.784 0 0 0 2.1-.22 8.11 8.11 0 0 1-7.18 4.32v-.04Z"/></svg><svg aria-hidden="true" class="auto astro-xhs3u4tj" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21 14h-1V7a3 3 0 0 0-3-3H7a3 3 0 0 0-3 3v7H3a1 1 0 0 0-1 1v2a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3v-2a1 1 0 0 0-1-1ZM6 7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7H6V7Zm14 10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-1h16v1Z"/></svg></template><link rel="stylesheet" href="/_astro/print.ehPL0gv-.css" media="print"><link rel="stylesheet" href="/_astro/common.8GHCkW7i.css"><style>@layer starlight.components{svg:where(.astro-xhs3u4tj){color:var(--sl-icon-color);font-size:var(--sl-icon-size,1em);width:1em;height:1em;overflow:visible}}
28
- </style><script type="module" src="/_astro/page.cNngjUgL.js"></script><style>@layer starlight.components{starlight-tabs:where(.astro-nnis2kke){display:block}.tablist-wrapper:where(.astro-nnis2kke){overflow-x:auto}:where(.astro-nnis2kke)[role=tablist]{border-bottom:2px solid var(--sl-color-gray-5);padding:0;list-style:none;display:flex}.tab:where(.astro-nnis2kke){display:flex}.tab:where(.astro-nnis2kke)>:where(.astro-nnis2kke)[role=tab]{--sl-tab-color-border:var(--sl-color-gray-5);line-height:var(--sl-line-height-headings);box-shadow:0 2px 0 var(--sl-tab-color-border);color:var(--sl-color-gray-3);outline-offset:var(--sl-outline-offset-inside);overflow-wrap:initial;align-items:center;gap:.5rem;padding:.275rem 1.25rem;text-decoration:none;display:flex}.tab:where(.astro-nnis2kke) :where(.astro-nnis2kke)[role=tab][aria-selected=true]{--sl-tab-color-border:var(--sl-color-text-accent);color:var(--sl-color-white);font-weight:600}.tablist-wrapper:where(.astro-nnis2kke)~[role=tabpanel]{margin-top:1rem}}
29
- </style></head><body class="astro-lnvyiehd"><a class="sl-skip-link astro-udp4fdqq" href="#_top">Aller au contenu</a><div class="page sl-flex astro-wp5b5qr3"><header class="header astro-wp5b5qr3"><div class="header astro-4xpvyfd2"><div class="title-wrapper sl-flex astro-4xpvyfd2"><a href="/" class="site-title sl-flex astro-qbunumlf"><img class="light:sl-hidden print:hidden astro-qbunumlf" alt src="/_astro/logo-sombre.BkgsFXxh.svg" width="32" height="32"><img class="dark:sl-hidden print:block astro-qbunumlf" alt src="/_astro/logo-clair.BqNh6JNi.svg" width="32" height="32"><span class="astro-qbunumlf" translate="no">HGDC Docs</span></a></div><div class="sl-flex print:hidden astro-4xpvyfd2"><site-search class="astro-4xpvyfd2 astro-atzxzflz" data-translations="{&quot;placeholder&quot;:&quot;Rechercher&quot;}"><button data-open-modal disabled aria-label="Rechercher" aria-keyshortcuts="Control+K" class="astro-atzxzflz"><svg aria-hidden="true" class="astro-atzxzflz astro-xhs3u4tj" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21.71 20.29 18 16.61A9 9 0 1 0 16.61 18l3.68 3.68a.999.999 0 0 0 1.42 0 1 1 0 0 0 0-1.39ZM11 18a7 7 0 1 1 0-14 7 7 0 0 1 0 14Z"/></svg><span class="sl-hidden md:sl-block astro-atzxzflz" aria-hidden="true">Rechercher</span><kbd class="sl-hidden md:sl-flex astro-atzxzflz" style="display: none;"><kbd class="astro-atzxzflz">Ctrl</kbd><kbd class="astro-atzxzflz">K</kbd></kbd></button><dialog style="padding:0" aria-label="Rechercher" class="astro-atzxzflz"><div class="dialog-frame sl-flex astro-atzxzflz"><button data-close-modal class="sl-flex md:sl-hidden astro-atzxzflz">Annuler</button><div class="search-container astro-atzxzflz"><div id="starlight__search" class="astro-atzxzflz"></div></div></div></dialog></site-search><script>
27
+ </script><template id="theme-icons"><svg aria-hidden="true" class="light astro-nqfvd567" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M5 12a1 1 0 0 0-1-1H3a1 1 0 0 0 0 2h1a1 1 0 0 0 1-1Zm.64 5-.71.71a1 1 0 0 0 0 1.41 1 1 0 0 0 1.41 0l.71-.71A1 1 0 0 0 5.64 17ZM12 5a1 1 0 0 0 1-1V3a1 1 0 0 0-2 0v1a1 1 0 0 0 1 1Zm5.66 2.34a1 1 0 0 0 .7-.29l.71-.71a1 1 0 1 0-1.41-1.41l-.66.71a1 1 0 0 0 0 1.41 1 1 0 0 0 .66.29Zm-12-.29a1 1 0 0 0 1.41 0 1 1 0 0 0 0-1.41l-.71-.71a1.004 1.004 0 1 0-1.43 1.41l.73.71ZM21 11h-1a1 1 0 0 0 0 2h1a1 1 0 0 0 0-2Zm-2.64 6A1 1 0 0 0 17 18.36l.71.71a1 1 0 0 0 1.41 0 1 1 0 0 0 0-1.41l-.76-.66ZM12 6.5a5.5 5.5 0 1 0 5.5 5.5A5.51 5.51 0 0 0 12 6.5Zm0 9a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7Zm0 3.5a1 1 0 0 0-1 1v1a1 1 0 0 0 2 0v-1a1 1 0 0 0-1-1Z"/></svg><svg aria-hidden="true" class="dark astro-nqfvd567" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21.64 13a1 1 0 0 0-1.05-.14 8.049 8.049 0 0 1-3.37.73 8.15 8.15 0 0 1-8.14-8.1 8.59 8.59 0 0 1 .25-2A1 1 0 0 0 8 2.36a10.14 10.14 0 1 0 14 11.69 1 1 0 0 0-.36-1.05Zm-9.5 6.69A8.14 8.14 0 0 1 7.08 5.22v.27a10.15 10.15 0 0 0 10.14 10.14 9.784 9.784 0 0 0 2.1-.22 8.11 8.11 0 0 1-7.18 4.32v-.04Z"/></svg><svg aria-hidden="true" class="auto astro-nqfvd567" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21 14h-1V7a3 3 0 0 0-3-3H7a3 3 0 0 0-3 3v7H3a1 1 0 0 0-1 1v2a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3v-2a1 1 0 0 0-1-1ZM6 7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7H6V7Zm14 10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-1h16v1Z"/></svg></template><link rel="stylesheet" href="/_astro/print.ehPL0gv-.css" media="print"><link rel="stylesheet" href="/_astro/common.CQYUsl_5.css"><style>@layer starlight.components{svg:where(.astro-nqfvd567){color:var(--sl-icon-color);font-size:var(--sl-icon-size,1em);width:1em;height:1em;overflow:visible}}
28
+ </style><script type="module" src="/_astro/page.cNngjUgL.js"></script><style>@layer starlight.components{starlight-tabs:where(.astro-ygjryhu4){display:block}.tablist-wrapper:where(.astro-ygjryhu4){overflow-x:auto}:where(.astro-ygjryhu4)[role=tablist]{border-bottom:2px solid var(--sl-color-gray-5);padding:0;list-style:none;display:flex}.tab:where(.astro-ygjryhu4){display:flex}.tab:where(.astro-ygjryhu4)>:where(.astro-ygjryhu4)[role=tab]{--sl-tab-color-border:var(--sl-color-gray-5);line-height:var(--sl-line-height-headings);box-shadow:0 2px 0 var(--sl-tab-color-border);color:var(--sl-color-gray-3);outline-offset:var(--sl-outline-offset-inside);overflow-wrap:initial;align-items:center;gap:.5rem;padding:.275rem 1.25rem;text-decoration:none;display:flex}.tab:where(.astro-ygjryhu4) :where(.astro-ygjryhu4)[role=tab][aria-selected=true]{--sl-tab-color-border:var(--sl-color-text-accent);color:var(--sl-color-white);font-weight:600}.tablist-wrapper:where(.astro-ygjryhu4)~[role=tabpanel]{margin-top:1rem}}
29
+ </style></head><body class="astro-ymcefofk"><a class="sl-skip-link astro-tlkpuiw6" href="#_top">Aller au contenu</a><div class="page sl-flex astro-ydkobtgc"><header class="header astro-ydkobtgc"><div class="header astro-ktmtoxfz"><div class="title-wrapper sl-flex astro-ktmtoxfz"><a href="/" class="site-title sl-flex astro-bbrnas37"><img class="light:sl-hidden print:hidden astro-bbrnas37" alt src="/_astro/logo-sombre.BkgsFXxh.svg" width="32" height="32"><img class="dark:sl-hidden print:block astro-bbrnas37" alt src="/_astro/logo-clair.BqNh6JNi.svg" width="32" height="32"><span class="astro-bbrnas37" translate="no">Docs</span></a></div><div class="sl-flex print:hidden astro-ktmtoxfz"><site-search class="astro-ktmtoxfz astro-duncofyt" data-translations="{&quot;placeholder&quot;:&quot;Rechercher&quot;}"><button data-open-modal disabled aria-label="Rechercher" aria-keyshortcuts="Control+K" class="astro-duncofyt"><svg aria-hidden="true" class="astro-duncofyt astro-nqfvd567" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21.71 20.29 18 16.61A9 9 0 1 0 16.61 18l3.68 3.68a.999.999 0 0 0 1.42 0 1 1 0 0 0 0-1.39ZM11 18a7 7 0 1 1 0-14 7 7 0 0 1 0 14Z"/></svg><span class="sl-hidden md:sl-block astro-duncofyt" aria-hidden="true">Rechercher</span><kbd class="sl-hidden md:sl-flex astro-duncofyt" style="display: none;"><kbd class="astro-duncofyt">Ctrl</kbd><kbd class="astro-duncofyt">K</kbd></kbd></button><dialog style="padding:0" aria-label="Rechercher" class="astro-duncofyt"><div class="dialog-frame sl-flex astro-duncofyt"><button data-close-modal class="sl-flex md:sl-hidden astro-duncofyt">Annuler</button><div class="search-container astro-duncofyt"><div id="starlight__search" class="astro-duncofyt"></div></div></div></dialog></site-search><script>
30
30
  (() => {
31
31
  const openBtn = document.querySelector('button[data-open-modal]');
32
32
  const shortcut = openBtn?.querySelector('kbd');
@@ -38,9 +38,9 @@
38
38
  }
39
39
  shortcut.style.display = '';
40
40
  })();
41
- </script><script type="module" src="/_astro/Search.astro_astro_type_script_index_0_lang.g9hoxVJg.js"></script></div><div class="sl-hidden md:sl-flex print:hidden right-group astro-4xpvyfd2"><div class="sl-flex social-icons astro-4xpvyfd2"></div><starlight-theme-select><label style="--sl-select-width: 6.25em" class="astro-ahwfeyk3"><span class="sr-only astro-ahwfeyk3">Selectionner le thème</span><svg aria-hidden="true" class="icon label-icon astro-ahwfeyk3 astro-xhs3u4tj" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21 14h-1V7a3 3 0 0 0-3-3H7a3 3 0 0 0-3 3v7H3a1 1 0 0 0-1 1v2a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3v-2a1 1 0 0 0-1-1ZM6 7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7H6V7Zm14 10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-1h16v1Z"/></svg><select autocomplete="off" class="astro-ahwfeyk3"><option value="dark" class="astro-ahwfeyk3">Sombre</option><option value="light" class="astro-ahwfeyk3">Clair</option><option value="auto" selected class="astro-ahwfeyk3">Auto</option></select><svg aria-hidden="true" class="icon caret astro-ahwfeyk3 astro-xhs3u4tj" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M17 9.17a1 1 0 0 0-1.41 0L12 12.71 8.46 9.17a1 1 0 1 0-1.41 1.42l4.24 4.24a1.002 1.002 0 0 0 1.42 0L17 10.59a1.002 1.002 0 0 0 0-1.42Z"/></svg></label></starlight-theme-select><script>
41
+ </script><script type="module" src="/_astro/Search.astro_astro_type_script_index_0_lang.g9hoxVJg.js"></script></div><div class="sl-hidden md:sl-flex print:hidden right-group astro-ktmtoxfz"><div class="sl-flex social-icons astro-ktmtoxfz"><nav class="hgdc-navbar astro-uwuccqly" aria-label="Liens"><a class="hgdc-navbar__link astro-uwuccqly" href="https://hgdc.ch">HGDC</a><a class="hgdc-navbar__primary astro-uwuccqly" href="https://docs.hgdc.ch">Console</a></nav></div><starlight-theme-select><label style="--sl-select-width: 6.25em" class="astro-mayj4s7h"><span class="sr-only astro-mayj4s7h">Selectionner le thème</span><svg aria-hidden="true" class="icon label-icon astro-mayj4s7h astro-nqfvd567" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21 14h-1V7a3 3 0 0 0-3-3H7a3 3 0 0 0-3 3v7H3a1 1 0 0 0-1 1v2a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3v-2a1 1 0 0 0-1-1ZM6 7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7H6V7Zm14 10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-1h16v1Z"/></svg><select autocomplete="off" class="astro-mayj4s7h"><option value="dark" class="astro-mayj4s7h">Sombre</option><option value="light" class="astro-mayj4s7h">Clair</option><option value="auto" selected class="astro-mayj4s7h">Auto</option></select><svg aria-hidden="true" class="icon caret astro-mayj4s7h astro-nqfvd567" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M17 9.17a1 1 0 0 0-1.41 0L12 12.71 8.46 9.17a1 1 0 1 0-1.41 1.42l4.24 4.24a1.002 1.002 0 0 0 1.42 0L17 10.59a1.002 1.002 0 0 0 0-1.42Z"/></svg></label></starlight-theme-select><script>
42
42
  StarlightThemeProvider.updatePickers();
43
- </script><script type="module">var e=`starlight-theme`,t=e=>e===`auto`||e===`dark`||e===`light`?e:`auto`,n=()=>t(typeof localStorage<`u`&&localStorage.getItem(e));function r(t){typeof localStorage<`u`&&localStorage.setItem(e,t===`light`||t===`dark`?t:``)}var i=()=>matchMedia(`(prefers-color-scheme: light)`).matches?`light`:`dark`;function a(e){StarlightThemeProvider.updatePickers(e),document.documentElement.dataset.theme=e===`auto`?i():e,r(e)}matchMedia(`(prefers-color-scheme: light)`).addEventListener(`change`,()=>{n()===`auto`&&a(`auto`)});var o=class extends HTMLElement{constructor(){super(),a(n()),this.querySelector(`select`)?.addEventListener(`change`,e=>{e.currentTarget instanceof HTMLSelectElement&&a(t(e.currentTarget.value))})}};customElements.define(`starlight-theme-select`,o);</script><script type="module">var e=class extends HTMLElement{constructor(){super();let e=this.querySelector(`select`);e&&(e.addEventListener(`change`,e=>{e.currentTarget instanceof HTMLSelectElement&&(window.location.pathname=e.currentTarget.value)}),window.addEventListener(`pageshow`,t=>{if(!t.persisted)return;let n=e.querySelector(`option[selected]`)?.index;n!==e.selectedIndex&&(e.selectedIndex=n??0)}))}};customElements.define(`starlight-lang-select`,e);</script></div></div></header><nav class="sidebar print:hidden astro-wp5b5qr3" aria-label="principale"><button popovertarget="starlight__sidebar" class="sl-menu-button sl-flex md:sl-hidden print:hidden astro-pddjbwje"><svg aria-hidden="true" class="open-menu astro-pddjbwje astro-xhs3u4tj" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M3 8h18a1 1 0 1 0 0-2H3a1 1 0 0 0 0 2Zm18 8H3a1 1 0 0 0 0 2h18a1 1 0 0 0 0-2Zm0-5H3a1 1 0 0 0 0 2h18a1 1 0 0 0 0-2Z"/></svg><svg aria-hidden="true" class="close-menu astro-pddjbwje astro-xhs3u4tj" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="m13.41 12 6.3-6.29a1.004 1.004 0 1 0-1.42-1.42L12 10.59l-6.29-6.3a1.004 1.004 0 0 0-1.42 1.42l6.3 6.29-6.3 6.29a1 1 0 0 0 0 1.42.998.998 0 0 0 1.42 0l6.29-6.3 6.29 6.3a.999.999 0 0 0 1.42 0 1 1 0 0 0 0-1.42L13.41 12Z"/></svg><span class="sr-only astro-pddjbwje">Menu</span></button><script type="module">var e=class extends HTMLElement{constructor(){super();let e=matchMedia(`(min-width: 50em)`),t=()=>{this.popover=e.matches?null:`auto`};t(),e.addEventListener(`change`,()=>t()),this.addEventListener(`toggle`,({newState:e})=>this.trapFocus(e===`open`))}trapFocus(e){document.querySelectorAll(`.main-frame, .sl-skip-link`).forEach(t=>{t.toggleAttribute(`inert`,e)})}};customElements.define(`sl-sidebar-pane`,e);</script><script type="module">for(let e of document.querySelectorAll(`[data-hgdc-version]`))e.addEventListener(`change`,()=>window.location.assign(e.value));</script><sl-sidebar-pane popover id="starlight__sidebar" class="sidebar-pane astro-wp5b5qr3"><div class="sidebar-content sl-flex astro-wp5b5qr3"><div class="hgdc-sections"><nav aria-label="Sections de la documentation"><ul class="hgdc-tabs"><li><a href="/" aria-current="page">Guides</a></li><li><a href="/reference/docs-json/">Référence</a></li><li><a href="/explications/fonctionnement/">Explications</a></li></ul></nav></div><sl-sidebar-state-persist data-hash="1b1wzvo" class="astro-2lv5n4ci"><script aria-hidden="true">
43
+ </script><script type="module">var e=`starlight-theme`,t=e=>e===`auto`||e===`dark`||e===`light`?e:`auto`,n=()=>t(typeof localStorage<`u`&&localStorage.getItem(e));function r(t){typeof localStorage<`u`&&localStorage.setItem(e,t===`light`||t===`dark`?t:``)}var i=()=>matchMedia(`(prefers-color-scheme: light)`).matches?`light`:`dark`;function a(e){StarlightThemeProvider.updatePickers(e),document.documentElement.dataset.theme=e===`auto`?i():e,r(e)}matchMedia(`(prefers-color-scheme: light)`).addEventListener(`change`,()=>{n()===`auto`&&a(`auto`)});var o=class extends HTMLElement{constructor(){super(),a(n()),this.querySelector(`select`)?.addEventListener(`change`,e=>{e.currentTarget instanceof HTMLSelectElement&&a(t(e.currentTarget.value))})}};customElements.define(`starlight-theme-select`,o);</script><script type="module">var e=class extends HTMLElement{constructor(){super();let e=this.querySelector(`select`);e&&(e.addEventListener(`change`,e=>{e.currentTarget instanceof HTMLSelectElement&&(window.location.pathname=e.currentTarget.value)}),window.addEventListener(`pageshow`,t=>{if(!t.persisted)return;let n=e.querySelector(`option[selected]`)?.index;n!==e.selectedIndex&&(e.selectedIndex=n??0)}))}};customElements.define(`starlight-lang-select`,e);</script></div></div></header><nav class="sidebar print:hidden astro-ydkobtgc" aria-label="principale"><button popovertarget="starlight__sidebar" class="sl-menu-button sl-flex md:sl-hidden print:hidden astro-gte3465h"><svg aria-hidden="true" class="open-menu astro-gte3465h astro-nqfvd567" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M3 8h18a1 1 0 1 0 0-2H3a1 1 0 0 0 0 2Zm18 8H3a1 1 0 0 0 0 2h18a1 1 0 0 0 0-2Zm0-5H3a1 1 0 0 0 0 2h18a1 1 0 0 0 0-2Z"/></svg><svg aria-hidden="true" class="close-menu astro-gte3465h astro-nqfvd567" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="m13.41 12 6.3-6.29a1.004 1.004 0 1 0-1.42-1.42L12 10.59l-6.29-6.3a1.004 1.004 0 0 0-1.42 1.42l6.3 6.29-6.3 6.29a1 1 0 0 0 0 1.42.998.998 0 0 0 1.42 0l6.29-6.3 6.29 6.3a.999.999 0 0 0 1.42 0 1 1 0 0 0 0-1.42L13.41 12Z"/></svg><span class="sr-only astro-gte3465h">Menu</span></button><script type="module">var e=class extends HTMLElement{constructor(){super();let e=matchMedia(`(min-width: 50em)`),t=()=>{this.popover=e.matches?null:`auto`};t(),e.addEventListener(`change`,()=>t()),this.addEventListener(`toggle`,({newState:e})=>this.trapFocus(e===`open`))}trapFocus(e){document.querySelectorAll(`.main-frame, .sl-skip-link`).forEach(t=>{t.toggleAttribute(`inert`,e)})}};customElements.define(`sl-sidebar-pane`,e);</script><script type="module">for(let e of document.querySelectorAll(`[data-hgdc-version]`))e.addEventListener(`change`,()=>window.location.assign(e.value));</script><sl-sidebar-pane popover id="starlight__sidebar" class="sidebar-pane astro-ydkobtgc"><div class="sidebar-content sl-flex astro-ydkobtgc"><div class="hgdc-sections"><nav aria-label="Sections de la documentation"><ul class="hgdc-tabs"><li><a href="/" aria-current="page">Guides</a></li><li><a href="/reference/docs-json/">Référence</a></li><li><a href="/explications/fonctionnement/">Explications</a></li></ul></nav></div><sl-sidebar-state-persist data-hash="1b1wzvo" class="astro-frdowxs4"><script aria-hidden="true">
44
44
  (() => {
45
45
  try {
46
46
  if (!matchMedia('(min-width: 50em)').matches) return;
@@ -63,22 +63,22 @@
63
63
  );
64
64
  } catch {}
65
65
  })();
66
- </script><ul class="top-level astro-4oho6hms"><li class="astro-4oho6hms"><details open class="astro-4oho6hms"><summary class="astro-4oho6hms"><span class="group-label astro-4oho6hms"><span class="large astro-4oho6hms">Démarrer</span></span><svg aria-hidden="true" class="caret astro-4oho6hms astro-xhs3u4tj" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg></summary><sl-sidebar-restore data-index="0"></sl-sidebar-restore><ul class="astro-4oho6hms"><li class="astro-4oho6hms"><a href="/" class="astro-4oho6hms"><span class="astro-4oho6hms">Bienvenue</span></a></li><li class="astro-4oho6hms"><a href="/demarrer/premiere-doc/" aria-current="page" class="astro-4oho6hms"><span class="astro-4oho6hms">Ta première doc</span></a></li><li class="astro-4oho6hms"><a href="/guides/publier/" class="astro-4oho6hms"><span class="astro-4oho6hms">Publier</span></a></li></ul></details></li><li class="astro-4oho6hms"><details open class="astro-4oho6hms"><summary class="astro-4oho6hms"><span class="group-label astro-4oho6hms"><span class="large astro-4oho6hms">Écrire</span></span><svg aria-hidden="true" class="caret astro-4oho6hms astro-xhs3u4tj" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg></summary><sl-sidebar-restore data-index="1"></sl-sidebar-restore><ul class="astro-4oho6hms"><li class="astro-4oho6hms"><a href="/guides/ecrire/" class="astro-4oho6hms"><span class="astro-4oho6hms">Écrire en MDX</span></a></li><li class="astro-4oho6hms"><a href="/guides/composants/" class="astro-4oho6hms"><span class="astro-4oho6hms">Composants</span></a></li><li class="astro-4oho6hms"><a href="/guides/navigation/" class="astro-4oho6hms"><span class="astro-4oho6hms">Navigation</span></a></li><li class="astro-4oho6hms"><a href="/guides/theme/" class="astro-4oho6hms"><span class="astro-4oho6hms">Thème et logo</span></a></li></ul></details></li><li class="astro-4oho6hms"><details open class="astro-4oho6hms"><summary class="astro-4oho6hms"><span class="group-label astro-4oho6hms"><span class="large astro-4oho6hms">Assistant et agents</span></span><svg aria-hidden="true" class="caret astro-4oho6hms astro-xhs3u4tj" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg></summary><sl-sidebar-restore data-index="2"></sl-sidebar-restore><ul class="astro-4oho6hms"><li class="astro-4oho6hms"><a href="/guides/assistant/" class="astro-4oho6hms"><span class="astro-4oho6hms">Assistant</span></a></li><li class="astro-4oho6hms"><a href="/guides/agents/" class="astro-4oho6hms"><span class="astro-4oho6hms">Pour les agents</span></a></li></ul></details></li></ul><script aria-hidden="true">
66
+ </script><ul class="top-level astro-3fgxvckv"><li class="astro-3fgxvckv"><details open class="astro-3fgxvckv"><summary class="astro-3fgxvckv"><span class="group-label astro-3fgxvckv"><span class="large astro-3fgxvckv">Démarrer</span></span><svg aria-hidden="true" class="caret astro-3fgxvckv astro-nqfvd567" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg></summary><sl-sidebar-restore data-index="0"></sl-sidebar-restore><ul class="astro-3fgxvckv"><li class="astro-3fgxvckv"><a href="/" class="astro-3fgxvckv"><span class="astro-3fgxvckv">Bienvenue</span></a></li><li class="astro-3fgxvckv"><a href="/demarrer/premiere-doc/" aria-current="page" class="astro-3fgxvckv"><span class="astro-3fgxvckv">Ta première doc</span></a></li><li class="astro-3fgxvckv"><a href="/guides/publier/" class="astro-3fgxvckv"><span class="astro-3fgxvckv">Publier</span></a></li></ul></details></li><li class="astro-3fgxvckv"><details open class="astro-3fgxvckv"><summary class="astro-3fgxvckv"><span class="group-label astro-3fgxvckv"><span class="large astro-3fgxvckv">Écrire</span></span><svg aria-hidden="true" class="caret astro-3fgxvckv astro-nqfvd567" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg></summary><sl-sidebar-restore data-index="1"></sl-sidebar-restore><ul class="astro-3fgxvckv"><li class="astro-3fgxvckv"><a href="/guides/ecrire/" class="astro-3fgxvckv"><span class="astro-3fgxvckv">Écrire en MDX</span></a></li><li class="astro-3fgxvckv"><a href="/guides/composants/" class="astro-3fgxvckv"><span class="astro-3fgxvckv">Composants</span></a></li><li class="astro-3fgxvckv"><a href="/guides/navigation/" class="astro-3fgxvckv"><span class="astro-3fgxvckv">Navigation</span></a></li><li class="astro-3fgxvckv"><a href="/guides/theme/" class="astro-3fgxvckv"><span class="astro-3fgxvckv">Thème et logo</span></a></li></ul></details></li><li class="astro-3fgxvckv"><details open class="astro-3fgxvckv"><summary class="astro-3fgxvckv"><span class="group-label astro-3fgxvckv"><span class="large astro-3fgxvckv">Assistant et agents</span></span><svg aria-hidden="true" class="caret astro-3fgxvckv astro-nqfvd567" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg></summary><sl-sidebar-restore data-index="2"></sl-sidebar-restore><ul class="astro-3fgxvckv"><li class="astro-3fgxvckv"><a href="/guides/assistant/" class="astro-3fgxvckv"><span class="astro-3fgxvckv">Assistant</span></a></li><li class="astro-3fgxvckv"><a href="/guides/agents/" class="astro-3fgxvckv"><span class="astro-3fgxvckv">Pour les agents</span></a></li></ul></details></li></ul><script aria-hidden="true">
67
67
  (() => {
68
68
  const scroller = document.getElementById('starlight__sidebar');
69
69
  if (!window._starlightScrollRestore || !scroller) return;
70
70
  scroller.scrollTop = window._starlightScrollRestore;
71
71
  delete window._starlightScrollRestore;
72
72
  })();
73
- </script></sl-sidebar-state-persist><div class="md:sl-hidden"><div class="mobile-preferences sl-flex astro-rl3robyt"><div class="social-icons astro-rl3robyt"></div><starlight-theme-select><label style="--sl-select-width: 6.25em" class="astro-ahwfeyk3"><span class="sr-only astro-ahwfeyk3">Selectionner le thème</span><svg aria-hidden="true" class="icon label-icon astro-ahwfeyk3 astro-xhs3u4tj" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21 14h-1V7a3 3 0 0 0-3-3H7a3 3 0 0 0-3 3v7H3a1 1 0 0 0-1 1v2a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3v-2a1 1 0 0 0-1-1ZM6 7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7H6V7Zm14 10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-1h16v1Z"/></svg><select autocomplete="off" class="astro-ahwfeyk3"><option value="dark" class="astro-ahwfeyk3">Sombre</option><option value="light" class="astro-ahwfeyk3">Clair</option><option value="auto" selected class="astro-ahwfeyk3">Auto</option></select><svg aria-hidden="true" class="icon caret astro-ahwfeyk3 astro-xhs3u4tj" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M17 9.17a1 1 0 0 0-1.41 0L12 12.71 8.46 9.17a1 1 0 1 0-1.41 1.42l4.24 4.24a1.002 1.002 0 0 0 1.42 0L17 10.59a1.002 1.002 0 0 0 0-1.42Z"/></svg></label></starlight-theme-select><script>
73
+ </script></sl-sidebar-state-persist><div class="md:sl-hidden"><div class="mobile-preferences sl-flex astro-nkgiahr6"><div class="social-icons astro-nkgiahr6"><nav class="hgdc-navbar astro-uwuccqly" aria-label="Liens"><a class="hgdc-navbar__link astro-uwuccqly" href="https://hgdc.ch">HGDC</a><a class="hgdc-navbar__primary astro-uwuccqly" href="https://docs.hgdc.ch">Console</a></nav></div><starlight-theme-select><label style="--sl-select-width: 6.25em" class="astro-mayj4s7h"><span class="sr-only astro-mayj4s7h">Selectionner le thème</span><svg aria-hidden="true" class="icon label-icon astro-mayj4s7h astro-nqfvd567" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21 14h-1V7a3 3 0 0 0-3-3H7a3 3 0 0 0-3 3v7H3a1 1 0 0 0-1 1v2a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3v-2a1 1 0 0 0-1-1ZM6 7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7H6V7Zm14 10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-1h16v1Z"/></svg><select autocomplete="off" class="astro-mayj4s7h"><option value="dark" class="astro-mayj4s7h">Sombre</option><option value="light" class="astro-mayj4s7h">Clair</option><option value="auto" selected class="astro-mayj4s7h">Auto</option></select><svg aria-hidden="true" class="icon caret astro-mayj4s7h astro-nqfvd567" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M17 9.17a1 1 0 0 0-1.41 0L12 12.71 8.46 9.17a1 1 0 1 0-1.41 1.42l4.24 4.24a1.002 1.002 0 0 0 1.42 0L17 10.59a1.002 1.002 0 0 0 0-1.42Z"/></svg></label></starlight-theme-select><script>
74
74
  StarlightThemeProvider.updatePickers();
75
- </script></div></div></div></sl-sidebar-pane></nav><div class="main-frame astro-wp5b5qr3"><script type="module">var e=document.getElementById(`starlight__sidebar`),t=e?.querySelector(`sl-sidebar-state-persist`),n=`sl-sidebar-state`,r=()=>{let r=[],i=t?.dataset.hash||``;try{let e=sessionStorage.getItem(n),t=JSON.parse(e||`{}`);Array.isArray(t.open)&&t.hash===i&&(r=t.open)}catch{}return{hash:i,open:r,scroll:e?.scrollTop||0}},i=e=>{try{sessionStorage.setItem(n,JSON.stringify(e))}catch{}},a=()=>i(r()),o=(e,t)=>{let n=r();n.open[t]=e,i(n)};t?.addEventListener(`click`,e=>{if(!(e.target instanceof Element))return;let t=e.target.closest(`summary`)?.closest(`details`);if(!t)return;let n=t.querySelector(`sl-sidebar-restore`),r=parseInt(n?.dataset.index||``);isNaN(r)||o(!t.open,r)}),addEventListener(`visibilitychange`,()=>{document.visibilityState===`hidden`&&a()});</script><div class="lg:sl-flex astro-4itz52l2"><aside class="right-sidebar-container print:hidden astro-4itz52l2"><div class="right-sidebar astro-4itz52l2"><div class="lg:sl-hidden astro-kfdnz6db"><mobile-starlight-toc data-min-h="2" data-max-h="3" class="astro-a6nqycz2"><nav aria-labelledby="starlight__on-this-page--mobile" class="astro-a6nqycz2"><details id="starlight__mobile-toc" class="astro-a6nqycz2"><summary id="starlight__on-this-page--mobile" class="sl-flex astro-a6nqycz2"><span class="toggle sl-flex astro-a6nqycz2">Sur cette page<svg aria-hidden="true" class="caret astro-a6nqycz2 astro-xhs3u4tj" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg></span><span class="display-current astro-a6nqycz2"></span></summary><div class="dropdown astro-a6nqycz2"><ul class="isMobile astro-3xl44bvg" style="--depth: 0;"><li style="--depth: 0;" class="astro-3xl44bvg"><a href="#_top" style="--depth: 0;" class="astro-3xl44bvg"><span style="--depth: 0;" class="astro-3xl44bvg">Vue d’ensemble</span></a></li><li style="--depth: 0;" class="astro-3xl44bvg"><a href="#et-ensuite" style="--depth: 0;" class="astro-3xl44bvg"><span style="--depth: 0;" class="astro-3xl44bvg">Et ensuite</span></a></li></ul></div></details></nav></mobile-starlight-toc><script type="module" src="/_astro/MobileTableOfContents.astro_astro_type_script_index_0_lang.C3fM4Kra.js"></script></div><div class="right-sidebar-panel sl-hidden lg:sl-block astro-kfdnz6db"><div class="sl-container astro-kfdnz6db"><starlight-toc data-min-h="2" data-max-h="3"><nav aria-labelledby="starlight__on-this-page"><h2 id="starlight__on-this-page">Sur cette page</h2><ul class="astro-3xl44bvg" style="--depth: 0;"><li style="--depth: 0;" class="astro-3xl44bvg"><a href="#_top" style="--depth: 0;" class="astro-3xl44bvg"><span style="--depth: 0;" class="astro-3xl44bvg">Vue d’ensemble</span></a></li><li style="--depth: 0;" class="astro-3xl44bvg"><a href="#et-ensuite" style="--depth: 0;" class="astro-3xl44bvg"><span style="--depth: 0;" class="astro-3xl44bvg">Et ensuite</span></a></li></ul></nav></starlight-toc><script type="module" src="/_astro/TableOfContents.astro_astro_type_script_index_0_lang.BpJaGz7G.js"></script></div></div></div></aside><div class="main-pane astro-4itz52l2"><main data-pagefind-body class="astro-lnvyiehd" lang="fr-CH" dir="ltr"><div class="content-panel astro-6fa4cqtd"><div class="sl-container astro-6fa4cqtd"><div class="hgdc-title"><h1 id="_top" class="astro-r6a57gjs">Ta première doc en cinq minutes</h1><div class="hgdc-page-actions not-content" data-hgdc-skip data-pagefind-ignore><button type="button" class="hgdc-action" data-hgdc-copy="/demarrer/premiere-doc.md"><svg aria-hidden="true" viewBox="0 0 24 24" width="16" height="16"><rect x="8" y="8" width="12" height="12" rx="3" fill="none" stroke="currentColor" stroke-width="1.8"></rect><path d="M16 8V6a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2" fill="none" stroke="currentColor" stroke-width="1.8"></path></svg><span data-label>Copier pour un LLM</span></button><details class="hgdc-menu"><summary class="hgdc-action hgdc-action--icon" aria-label="Autres formats de la page"><svg aria-hidden="true" viewBox="0 0 24 24" width="16" height="16"><path d="m6 9 6 6 6-6" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"></path></svg></summary><ul class="hgdc-menu__list"><li><a href="/demarrer/premiere-doc.md">Voir en Markdown</a></li><li><a data-hgdc-open="claude" href="https://claude.ai/new" target="_blank" rel="noopener">Ouvrir dans Claude</a></li><li><a data-hgdc-open="chatgpt" href="https://chatgpt.com/" target="_blank" rel="noopener">Ouvrir dans ChatGPT</a></li><li><a href="/llms.txt">Index pour les agents (llms.txt)</a></li></ul></details><button type="button" class="hgdc-action" data-hgdc-ask><svg aria-hidden="true" viewBox="0 0 24 24" width="16" height="16"><path d="M12 3l1.9 4.6L18.5 9.5l-4.6 1.9L12 16l-1.9-4.6L5.5 9.5l4.6-1.9z" fill="currentColor"></path></svg><span>Demander à l'assistant</span></button><span class="sr-only" role="status" aria-live="polite" data-hgdc-copy-status></span></div></div><script type="module">var e=document.querySelector(`[data-hgdc-copy-status]`);for(let t of document.querySelectorAll(`[data-hgdc-copy]`)){let n=t.querySelector(`[data-label]`);t.addEventListener(`click`,async()=>{let r=t=>{n.textContent=t,e&&(e.textContent=t),setTimeout(()=>n.textContent=`Copier pour un LLM`,2e3)};try{let e=await fetch(t.dataset.hgdcCopy);if(!e.ok)throw Error(String(e.status));await navigator.clipboard.writeText(await e.text()),r(`Page copiée`)}catch{r(`Copie impossible`)}})}var t=`Lis ${new URL(document.querySelector(`[data-hgdc-copy]`).dataset.hgdcCopy,location.href).href} et réponds à mes questions sur cette page.`;for(let e of document.querySelectorAll(`[data-hgdc-open]`))e.href=`${e.dataset.hgdcOpen===`claude`?`https://claude.ai/new`:`https://chatgpt.com/`}?q=${encodeURIComponent(t)}`;for(let e of document.querySelectorAll(`.hgdc-menu`))document.addEventListener(`click`,t=>{e.open&&!e.contains(t.target)&&(e.open=!1)}),e.addEventListener(`keydown`,t=>{t.key===`Escape`&&e.open&&(e.open=!1,e.querySelector(`summary`)?.focus())});for(let e of document.querySelectorAll(`[data-hgdc-ask]`))e.addEventListener(`click`,()=>document.dispatchEvent(new CustomEvent(`hgdc:assistant-open`)));</script></div></div><div class="content-panel astro-6fa4cqtd"><div class="sl-container astro-6fa4cqtd"><div class="sl-markdown-content"><p>Il te faut Node.js 22 ou plus récent, ou Bun. Tout le reste s’installe avec le paquet <code>@hgdc/docs</code>.</p>
75
+ </script></div></div></div></sl-sidebar-pane></nav><div class="main-frame astro-ydkobtgc"><script type="module">var e=document.getElementById(`starlight__sidebar`),t=e?.querySelector(`sl-sidebar-state-persist`),n=`sl-sidebar-state`,r=()=>{let r=[],i=t?.dataset.hash||``;try{let e=sessionStorage.getItem(n),t=JSON.parse(e||`{}`);Array.isArray(t.open)&&t.hash===i&&(r=t.open)}catch{}return{hash:i,open:r,scroll:e?.scrollTop||0}},i=e=>{try{sessionStorage.setItem(n,JSON.stringify(e))}catch{}},a=()=>i(r()),o=(e,t)=>{let n=r();n.open[t]=e,i(n)};t?.addEventListener(`click`,e=>{if(!(e.target instanceof Element))return;let t=e.target.closest(`summary`)?.closest(`details`);if(!t)return;let n=t.querySelector(`sl-sidebar-restore`),r=parseInt(n?.dataset.index||``);isNaN(r)||o(!t.open,r)}),addEventListener(`visibilitychange`,()=>{document.visibilityState===`hidden`&&a()});</script><div class="lg:sl-flex astro-qp7kgym3"><aside class="right-sidebar-container print:hidden astro-qp7kgym3"><div class="right-sidebar astro-qp7kgym3"><div class="lg:sl-hidden astro-mojbznwa"><mobile-starlight-toc data-min-h="2" data-max-h="3" class="astro-z4ijp526"><nav aria-labelledby="starlight__on-this-page--mobile" class="astro-z4ijp526"><details id="starlight__mobile-toc" class="astro-z4ijp526"><summary id="starlight__on-this-page--mobile" class="sl-flex astro-z4ijp526"><span class="toggle sl-flex astro-z4ijp526">Sur cette page<svg aria-hidden="true" class="caret astro-z4ijp526 astro-nqfvd567" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg></span><span class="display-current astro-z4ijp526"></span></summary><div class="dropdown astro-z4ijp526"><ul class="isMobile astro-vrgp5ku5" style="--depth: 0;"><li style="--depth: 0;" class="astro-vrgp5ku5"><a href="#_top" style="--depth: 0;" class="astro-vrgp5ku5"><span style="--depth: 0;" class="astro-vrgp5ku5">Vue d’ensemble</span></a></li><li style="--depth: 0;" class="astro-vrgp5ku5"><a href="#et-ensuite" style="--depth: 0;" class="astro-vrgp5ku5"><span style="--depth: 0;" class="astro-vrgp5ku5">Et ensuite</span></a></li></ul></div></details></nav></mobile-starlight-toc><script type="module" src="/_astro/MobileTableOfContents.astro_astro_type_script_index_0_lang.C3fM4Kra.js"></script></div><div class="right-sidebar-panel sl-hidden lg:sl-block astro-mojbznwa"><div class="sl-container astro-mojbznwa"><starlight-toc data-min-h="2" data-max-h="3"><nav aria-labelledby="starlight__on-this-page"><h2 id="starlight__on-this-page">Sur cette page</h2><ul class="astro-vrgp5ku5" style="--depth: 0;"><li style="--depth: 0;" class="astro-vrgp5ku5"><a href="#_top" style="--depth: 0;" class="astro-vrgp5ku5"><span style="--depth: 0;" class="astro-vrgp5ku5">Vue d’ensemble</span></a></li><li style="--depth: 0;" class="astro-vrgp5ku5"><a href="#et-ensuite" style="--depth: 0;" class="astro-vrgp5ku5"><span style="--depth: 0;" class="astro-vrgp5ku5">Et ensuite</span></a></li></ul></nav></starlight-toc><script type="module" src="/_astro/TableOfContents.astro_astro_type_script_index_0_lang.BpJaGz7G.js"></script></div></div></div></aside><div class="main-pane astro-qp7kgym3"><main data-pagefind-body class="astro-ymcefofk" lang="fr-CH" dir="ltr"><div class="content-panel astro-u747o4dk"><div class="sl-container astro-u747o4dk"><div class="hgdc-title"><h1 id="_top" class="astro-7gbl5cwn">Ta première doc en cinq minutes</h1><div class="hgdc-page-actions not-content" data-hgdc-skip data-pagefind-ignore><button type="button" class="hgdc-action" data-hgdc-copy="/demarrer/premiere-doc.md"><svg aria-hidden="true" viewBox="0 0 24 24" width="16" height="16"><rect x="8" y="8" width="12" height="12" rx="3" fill="none" stroke="currentColor" stroke-width="1.8"></rect><path d="M16 8V6a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2" fill="none" stroke="currentColor" stroke-width="1.8"></path></svg><span data-label>Copier pour un LLM</span></button><details class="hgdc-menu"><summary class="hgdc-action hgdc-action--icon" aria-label="Autres formats de la page"><svg aria-hidden="true" viewBox="0 0 24 24" width="16" height="16"><path d="m6 9 6 6 6-6" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"></path></svg></summary><ul class="hgdc-menu__list"><li><a href="/demarrer/premiere-doc.md">Voir en Markdown</a></li><li><a data-hgdc-open="claude" href="https://claude.ai/new" target="_blank" rel="noopener">Ouvrir dans Claude</a></li><li><a data-hgdc-open="chatgpt" href="https://chatgpt.com/" target="_blank" rel="noopener">Ouvrir dans ChatGPT</a></li><li><a href="/llms.txt">Index pour les agents (llms.txt)</a></li></ul></details><button type="button" class="hgdc-action" data-hgdc-ask><svg aria-hidden="true" viewBox="0 0 24 24" width="16" height="16"><path d="M12 3l1.9 4.6L18.5 9.5l-4.6 1.9L12 16l-1.9-4.6L5.5 9.5l4.6-1.9z" fill="currentColor"></path></svg><span>Demander à l'assistant</span></button><span class="sr-only" role="status" aria-live="polite" data-hgdc-copy-status></span></div></div><script type="module">var e=document.querySelector(`[data-hgdc-copy-status]`);for(let t of document.querySelectorAll(`[data-hgdc-copy]`)){let n=t.querySelector(`[data-label]`);t.addEventListener(`click`,async()=>{let r=t=>{n.textContent=t,e&&(e.textContent=t),setTimeout(()=>n.textContent=`Copier pour un LLM`,2e3)};try{let e=await fetch(t.dataset.hgdcCopy);if(!e.ok)throw Error(String(e.status));await navigator.clipboard.writeText(await e.text()),r(`Page copiée`)}catch{r(`Copie impossible`)}})}var t=`Lis ${new URL(document.querySelector(`[data-hgdc-copy]`).dataset.hgdcCopy,location.href).href} et réponds à mes questions sur cette page.`;for(let e of document.querySelectorAll(`[data-hgdc-open]`))e.href=`${e.dataset.hgdcOpen===`claude`?`https://claude.ai/new`:`https://chatgpt.com/`}?q=${encodeURIComponent(t)}`;for(let e of document.querySelectorAll(`.hgdc-menu`))document.addEventListener(`click`,t=>{e.open&&!e.contains(t.target)&&(e.open=!1)}),e.addEventListener(`keydown`,t=>{t.key===`Escape`&&e.open&&(e.open=!1,e.querySelector(`summary`)?.focus())});for(let e of document.querySelectorAll(`[data-hgdc-ask]`))e.addEventListener(`click`,()=>document.dispatchEvent(new CustomEvent(`hgdc:assistant-open`)));</script></div></div><div class="content-panel astro-u747o4dk"><div class="sl-container astro-u747o4dk"><div class="sl-markdown-content"><p>Il te faut Node.js 22 ou plus récent, ou Bun. Tout le reste s’installe avec le paquet <code>@hgdc/docs</code>.</p>
76
76
  <ol class="hgdc-steps"><li class="hgdc-step"><p class="hgdc-step__title">Créer le dossier</p><div class="hgdc-step__body"><p>Un dépôt Git à part, ou un dossier <code>docs/</code> dans le dépôt de ton produit.</p><div class="expressive-code"><link rel="stylesheet" href="/_astro/ec.8nqtp.css"><script type="module" src="/_astro/ec.0vx5m.js"></script><figure class="frame is-terminal not-content"><figcaption class="header"><span class="title"></span><span class="sr-only">Fenêtre de terminal</span></figcaption><pre data-language="bash"><code><div class="ec-line"><div class="code"><span style="--0:#FFA657;--1:#953800">mkdir</span><span style="--0:#E6EDF3;--1:#1F2328"> </span><span style="--0:#A5D6FF;--1:#0A3069">docs</span><span style="--0:#E6EDF3;--1:#1F2328"> &#x26;&#x26; </span><span style="--0:#79C0FF;--1:#0550AE">cd</span><span style="--0:#E6EDF3;--1:#1F2328"> </span><span style="--0:#A5D6FF;--1:#0A3069">docs</span></div></div><div class="ec-line"><div class="code"><span style="--0:#FFA657;--1:#953800">npm</span><span style="--0:#E6EDF3;--1:#1F2328"> </span><span style="--0:#A5D6FF;--1:#0A3069">init</span><span style="--0:#E6EDF3;--1:#1F2328"> </span><span style="--0:#79C0FF;--1:#0550AE">-y</span></div></div><div class="ec-line"><div class="code"><span style="--0:#FFA657;--1:#953800">npm</span><span style="--0:#E6EDF3;--1:#1F2328"> </span><span style="--0:#A5D6FF;--1:#0A3069">install</span><span style="--0:#E6EDF3;--1:#1F2328"> </span><span style="--0:#79C0FF;--1:#0550AE">--save-dev</span><span style="--0:#E6EDF3;--1:#1F2328"> </span><span style="--0:#A5D6FF;--1:#0A3069">@hgdc/docs</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copier dans le presse-papiers" data-copied="Copié !" data-code="mkdir docs &#x26;&#x26; cd docsnpm init -ynpm install --save-dev @hgdc/docs"><div></div></button></div></figure></div></div></li><li class="hgdc-step"><p class="hgdc-step__title">Écrire docs.json</p><div class="hgdc-step__body"><p>À la racine du dossier. Seuls <code>name</code> et <code>navigation</code> sont obligatoires.</p><div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="json"><code><div class="ec-line"><div class="code"><span style="--0:#E6EDF3;--1:#1F2328">{</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7EE787;--1:#116329">"name"</span><span style="--0:#E6EDF3;--1:#1F2328">: </span><span style="--0:#A5D6FF;--1:#0A3069">"Documentation Acme"</span><span style="--0:#E6EDF3;--1:#1F2328">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7EE787;--1:#116329">"colors"</span><span style="--0:#E6EDF3;--1:#1F2328">: { </span><span style="--0:#7EE787;--1:#116329">"primary"</span><span style="--0:#E6EDF3;--1:#1F2328">: </span><span style="--0:#A5D6FF;--1:#0A3069">"#0f766e"</span><span style="--0:#E6EDF3;--1:#1F2328"> },</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7EE787;--1:#116329">"navigation"</span><span style="--0:#E6EDF3;--1:#1F2328">: {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7EE787;--1:#116329">"groups"</span><span style="--0:#E6EDF3;--1:#1F2328">: [{ </span><span style="--0:#7EE787;--1:#116329">"group"</span><span style="--0:#E6EDF3;--1:#1F2328">: </span><span style="--0:#A5D6FF;--1:#0A3069">"Démarrer"</span><span style="--0:#E6EDF3;--1:#1F2328">, </span><span style="--0:#7EE787;--1:#116329">"pages"</span><span style="--0:#E6EDF3;--1:#1F2328">: [</span><span style="--0:#A5D6FF;--1:#0A3069">"index"</span><span style="--0:#E6EDF3;--1:#1F2328">, </span><span style="--0:#A5D6FF;--1:#0A3069">"installation"</span><span style="--0:#E6EDF3;--1:#1F2328">] }]</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#E6EDF3;--1:#1F2328"> </span></span><span style="--0:#E6EDF3;--1:#1F2328">}</span></div></div><div class="ec-line"><div class="code"><span style="--0:#E6EDF3;--1:#1F2328">}</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copier dans le presse-papiers" data-copied="Copié !" data-code="{ &#x22;name&#x22;: &#x22;Documentation Acme&#x22;, &#x22;colors&#x22;: { &#x22;primary&#x22;: &#x22;#0f766e&#x22; }, &#x22;navigation&#x22;: { &#x22;groups&#x22;: [{ &#x22;group&#x22;: &#x22;Démarrer&#x22;, &#x22;pages&#x22;: [&#x22;index&#x22;, &#x22;installation&#x22;] }] }}"><div></div></button></div></figure></div></div></li><li class="hgdc-step"><p class="hgdc-step__title">Écrire les pages</p><div class="hgdc-step__body"><p>Une page par entrée de la navigation : <code>index.mdx</code> et <code>installation.mdx</code>. Chaque page commence par un titre.</p><div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="mdx"><code><div class="ec-line"><div class="code"><span style="--0:#A5D6FF;--1:#0A3069">---</span></div></div><div class="ec-line"><div class="code"><span style="--0:#7EE787;--1:#116329">title</span><span style="--0:#E6EDF3;--1:#1F2328">: </span><span style="--0:#A5D6FF;--1:#0A3069">Installation</span></div></div><div class="ec-line"><div class="code"><span style="--0:#7EE787;--1:#116329">description</span><span style="--0:#E6EDF3;--1:#1F2328">: </span><span style="--0:#A5D6FF;--1:#0A3069">Installer Acme en deux minutes.</span></div></div><div class="ec-line"><div class="code"><span style="--0:#A5D6FF;--1:#0A3069">---</span></div></div><div class="ec-line"><div class="code">
77
77
  </div></div><div class="ec-line"><div class="code"><span style="--0:#E6EDF3;--1:#1F2328">Lance la commande suivante :</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copier dans le presse-papiers" data-copied="Copié !" data-code="---title: Installationdescription: Installer Acme en deux minutes.---Lance la commande suivante :"><div></div></button></div></figure></div></div></li><li class="hgdc-step"><p class="hgdc-step__title">Voir le site</p><div class="hgdc-step__body"><p>Ajoute les scripts dans <code>package.json</code>, puis lance <code>npm run dev</code>.</p><div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="json"><code><div class="ec-line"><div class="code"><span style="--0:#E6EDF3;--1:#1F2328">{</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7EE787;--1:#116329">"scripts"</span><span style="--0:#E6EDF3;--1:#1F2328">: {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7EE787;--1:#116329">"dev"</span><span style="--0:#E6EDF3;--1:#1F2328">: </span><span style="--0:#A5D6FF;--1:#0A3069">"hgdc-docs dev"</span><span style="--0:#E6EDF3;--1:#1F2328">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7EE787;--1:#116329">"build"</span><span style="--0:#E6EDF3;--1:#1F2328">: </span><span style="--0:#A5D6FF;--1:#0A3069">"hgdc-docs build"</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#E6EDF3;--1:#1F2328"> </span></span><span style="--0:#E6EDF3;--1:#1F2328">}</span></div></div><div class="ec-line"><div class="code"><span style="--0:#E6EDF3;--1:#1F2328">}</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copier dans le presse-papiers" data-copied="Copié !" data-code="{ &#x22;scripts&#x22;: { &#x22;dev&#x22;: &#x22;hgdc-docs dev&#x22;, &#x22;build&#x22;: &#x22;hgdc-docs build&#x22; }}"><div></div></button></div></figure></div><p>Le site s’ouvre sur <code>http://localhost:4321</code> et se recharge à chaque modification.</p></div></li></ol>
78
- <aside aria-label="Note" class="starlight-aside starlight-aside--note"><p class="starlight-aside__title" aria-hidden="true"><svg aria-hidden="true" class="starlight-aside__icon astro-xhs3u4tj" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M12 11a1 1 0 0 0-1 1v4a1 1 0 0 0 2 0v-4a1 1 0 0 0-1-1Zm.38-3.92a1 1 0 0 0-.76 0 1 1 0 0 0-.33.21 1.15 1.15 0 0 0-.21.33 1 1 0 0 0 .21 1.09c.097.088.209.16.33.21A1 1 0 0 0 13 8a1.05 1.05 0 0 0-.29-.71 1 1 0 0 0-.33-.21ZM12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20Zm0 18a8 8 0 1 1 0-16.001A8 8 0 0 1 12 20Z"/></svg>Note</p><div class="starlight-aside__content"><p><code>hgdc-docs build</code> écrit le site dans <code>dist/</code>. Ajoute <code>dist/</code> et <code>.hgdc-docs/</code> à ton <code>.gitignore</code>.</p></div></aside>
78
+ <aside aria-label="Note" class="starlight-aside starlight-aside--note"><p class="starlight-aside__title" aria-hidden="true"><svg aria-hidden="true" class="starlight-aside__icon astro-nqfvd567" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M12 11a1 1 0 0 0-1 1v4a1 1 0 0 0 2 0v-4a1 1 0 0 0-1-1Zm.38-3.92a1 1 0 0 0-.76 0 1 1 0 0 0-.33.21 1.15 1.15 0 0 0-.21.33 1 1 0 0 0 .21 1.09c.097.088.209.16.33.21A1 1 0 0 0 13 8a1.05 1.05 0 0 0-.29-.71 1 1 0 0 0-.33-.21ZM12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20Zm0 18a8 8 0 1 1 0-16.001A8 8 0 0 1 12 20Z"/></svg>Note</p><div class="starlight-aside__content"><p><code>hgdc-docs build</code> écrit le site dans <code>dist/</code>. Ajoute <code>dist/</code> et <code>.hgdc-docs/</code> à ton <code>.gitignore</code>.</p></div></aside>
79
79
  <h2 id="et-ensuite">Et ensuite</h2>
80
80
  <ul>
81
- <li><a href="/guides/publier/">Publier avec HGDC Host</a> pour mettre le site en ligne.</li>
81
+ <li><a href="/guides/publier/">Publier avec Host</a> pour mettre le site en ligne.</li>
82
82
  <li><a href="/guides/ecrire/">Écrire en MDX</a> pour les titres, les liens, les images et le code.</li>
83
83
  <li><a href="/reference/docs-json/">docs.json</a> pour toutes les options.</li>
84
- </ul></div><footer class="sl-flex astro-k7j6ewsk"><div class="meta sl-flex astro-k7j6ewsk"></div><div class="pagination-links print:hidden astro-lwfwnmnd" dir="ltr"><a href="/" rel="prev" class="astro-lwfwnmnd"><svg aria-hidden="true" class="astro-lwfwnmnd astro-xhs3u4tj" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.5rem;"><path d="M17 11H9.41l3.3-3.29a1.004 1.004 0 1 0-1.42-1.42l-5 5a1 1 0 0 0-.21.33 1 1 0 0 0 0 .76 1 1 0 0 0 .21.33l5 5a1.002 1.002 0 0 0 1.639-.325 1 1 0 0 0-.219-1.095L9.41 13H17a1 1 0 0 0 0-2Z"/></svg><span class="astro-lwfwnmnd">Précédent<br class="astro-lwfwnmnd"><span class="link-title astro-lwfwnmnd">Bienvenue</span></span></a><a href="/guides/publier/" rel="next" class="astro-lwfwnmnd"><svg aria-hidden="true" class="astro-lwfwnmnd astro-xhs3u4tj" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.5rem;"><path d="M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z"/></svg><span class="astro-lwfwnmnd">Suivant<br class="astro-lwfwnmnd"><span class="link-title astro-lwfwnmnd">Publier</span></span></a></div></footer></div></div></main></div></div></div></div><hgdc-assistant data-endpoint="https://docs.hgdc.ch/api/v1/ask" data-project="jn7dj6vzkgs7n2d16kqjtb99yd8gbdw0" data-name="HGDC Docs"><button type="button" class="hgdc-launcher" data-open aria-haspopup="dialog" aria-expanded="false"><svg aria-hidden="true" viewBox="0 0 24 24" width="18" height="18"><path d="M12 3l1.9 4.6L18.5 9.5l-4.6 1.9L12 16l-1.9-4.6L5.5 9.5l4.6-1.9z" fill="currentColor"></path><path d="M18.5 15l.8 1.9 1.9.8-1.9.8-.8 1.9-.8-1.9-1.9-.8 1.9-.8z" fill="currentColor"></path></svg><span>Demander à l'IA</span><kbd class="hgdc-kbd" data-shortcut aria-hidden="true">Ctrl I</kbd></button><section class="hgdc-panel" role="dialog" aria-modal="false" aria-labelledby="hgdc-assistant-title" hidden><header class="hgdc-panel__header"><div><h2 id="hgdc-assistant-title">Assistant</h2><p>Répond à partir de cette documentation, avec ses sources.</p></div><div class="hgdc-panel__tools"><button type="button" class="hgdc-icon-button" data-reset aria-label="Nouvelle conversation" hidden><svg aria-hidden="true" viewBox="0 0 24 24" width="18" height="18"><path d="M4 12a8 8 0 1 0 2.3-5.7M4 4v4h4" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"></path></svg></button><button type="button" class="hgdc-icon-button" data-close aria-label="Fermer l'assistant"><svg aria-hidden="true" viewBox="0 0 24 24" width="18" height="18"><path d="M6 6l12 12M18 6 6 18" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"></path></svg></button></div></header><div class="hgdc-panel__body" data-log aria-live="polite"><div class="hgdc-empty" data-empty><p class="hgdc-empty__title">Pose ta question sur HGDC Docs.</p><p>Je cherche dans les pages de cette documentation et je cite mes sources. Si la réponse n'y est pas, je te le dis.</p></div></div><form class="hgdc-panel__form" data-form><label class="sr-only" for="hgdc-question">Ta question</label><textarea id="hgdc-question" data-input rows="1" maxlength="1000" placeholder="Comment publier ma doc ?" required></textarea><button type="submit" class="hgdc-send" data-send aria-label="Envoyer la question"><svg aria-hidden="true" viewBox="0 0 24 24" width="18" height="18"><path d="M12 19V5M5 12l7-7 7 7" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"></path></svg></button></form><p class="hgdc-panel__note">Réponses générées par IA (Claude, d'Anthropic), à vérifier. Les questions sont conservées 90 jours pour améliorer cette documentation.</p></section></hgdc-assistant><script type="module" src="/_astro/Assistant.astro_astro_type_script_index_0_lang.DWgmlr85.js"></script></body></html>
84
+ </ul></div><hgdc-feedback class="hgdc-feedback not-content astro-2pl224dp" data-endpoint="https://docs.hgdc.ch/api/v1/feedback" data-project="jn7dj6vzkgs7n2d16kqjtb99yd8gbdw0" data-pagefind-ignore="true"><div data-step="ask" class="astro-2pl224dp"><p class="hgdc-feedback__question astro-2pl224dp">Cette page t'a aidé ?</p><div class="hgdc-feedback__choices astro-2pl224dp"><button type="button" data-helpful="true" class="astro-2pl224dp">Oui</button><button type="button" data-helpful="false" class="astro-2pl224dp">Non</button></div></div><form data-step="comment" hidden class="astro-2pl224dp"><label for="hgdc-feedback-comment" class="astro-2pl224dp">Qu'est-ce qui manquait ou pourrait être plus clair ? (facultatif)</label><textarea id="hgdc-feedback-comment" name="comment" rows="3" maxlength="1000" class="astro-2pl224dp"></textarea><div class="hgdc-feedback__choices astro-2pl224dp"><button type="submit" class="astro-2pl224dp">Envoyer</button><button type="button" data-skip class="astro-2pl224dp">Passer</button></div></form><p data-step="done" class="hgdc-feedback__done astro-2pl224dp" role="status" hidden>Merci, c'est noté.</p></hgdc-feedback><footer class="sl-flex astro-t4mirzop"><div class="meta sl-flex astro-t4mirzop"></div><div class="pagination-links print:hidden astro-ofihuwrj" dir="ltr"><a href="/" rel="prev" class="astro-ofihuwrj"><svg aria-hidden="true" class="astro-ofihuwrj astro-nqfvd567" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.5rem;"><path d="M17 11H9.41l3.3-3.29a1.004 1.004 0 1 0-1.42-1.42l-5 5a1 1 0 0 0-.21.33 1 1 0 0 0 0 .76 1 1 0 0 0 .21.33l5 5a1.002 1.002 0 0 0 1.639-.325 1 1 0 0 0-.219-1.095L9.41 13H17a1 1 0 0 0 0-2Z"/></svg><span class="astro-ofihuwrj">Précédent<br class="astro-ofihuwrj"><span class="link-title astro-ofihuwrj">Bienvenue</span></span></a><a href="/guides/publier/" rel="next" class="astro-ofihuwrj"><svg aria-hidden="true" class="astro-ofihuwrj astro-nqfvd567" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.5rem;"><path d="M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z"/></svg><span class="astro-ofihuwrj">Suivant<br class="astro-ofihuwrj"><span class="link-title astro-ofihuwrj">Publier</span></span></a></div></footer><script type="module">var e=class extends HTMLElement{#e=null;connectedCallback(){for(let e of this.querySelectorAll(`[data-helpful]`))e.addEventListener(`click`,()=>this.#n(e.dataset.helpful===`true`));let e=this.querySelector(`form`);e.addEventListener(`submit`,t=>{t.preventDefault();let n=new FormData(e).get(`comment`);this.#r(typeof n==`string`?n.trim():``)}),this.querySelector(`[data-skip]`)?.addEventListener(`click`,()=>void this.#r(``))}#t(e){for(let t of this.querySelectorAll(`[data-step]`))t.hidden=t.dataset.step!==e;e===`comment`&&this.querySelector(`textarea`)?.focus()}#n(e){this.#e=e,e?this.#r(``):this.#t(`comment`)}async#r(e){if(this.#e!==null){try{await fetch(this.dataset.endpoint,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({project:this.dataset.project,page:location.pathname,helpful:this.#e,...e?{comment:e}:{}}),keepalive:!0})}catch{}this.#t(`done`)}}};customElements.define(`hgdc-feedback`,e);</script></div></div></main></div></div></div></div><hgdc-assistant data-endpoint="https://docs.hgdc.ch/api/v1/ask" data-project="jn7dj6vzkgs7n2d16kqjtb99yd8gbdw0" data-name="Docs"><button type="button" class="hgdc-launcher" data-open aria-haspopup="dialog" aria-expanded="false"><svg aria-hidden="true" viewBox="0 0 24 24" width="18" height="18"><path d="M12 3l1.9 4.6L18.5 9.5l-4.6 1.9L12 16l-1.9-4.6L5.5 9.5l4.6-1.9z" fill="currentColor"></path><path d="M18.5 15l.8 1.9 1.9.8-1.9.8-.8 1.9-.8-1.9-1.9-.8 1.9-.8z" fill="currentColor"></path></svg><span>Demander à l'IA</span><kbd class="hgdc-kbd" data-shortcut aria-hidden="true">Ctrl I</kbd></button><section class="hgdc-panel" role="dialog" aria-modal="false" aria-labelledby="hgdc-assistant-title" hidden><header class="hgdc-panel__header"><div><h2 id="hgdc-assistant-title">Assistant</h2><p>Répond à partir de cette documentation, avec ses sources.</p></div><div class="hgdc-panel__tools"><button type="button" class="hgdc-icon-button" data-reset aria-label="Nouvelle conversation" hidden><svg aria-hidden="true" viewBox="0 0 24 24" width="18" height="18"><path d="M4 12a8 8 0 1 0 2.3-5.7M4 4v4h4" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"></path></svg></button><button type="button" class="hgdc-icon-button" data-close aria-label="Fermer l'assistant"><svg aria-hidden="true" viewBox="0 0 24 24" width="18" height="18"><path d="M6 6l12 12M18 6 6 18" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"></path></svg></button></div></header><div class="hgdc-panel__body" data-log aria-live="polite"><div class="hgdc-empty" data-empty><p class="hgdc-empty__title">Pose ta question sur Docs.</p><p>Je cherche dans les pages de cette documentation et je cite mes sources. Si la réponse n'y est pas, je te le dis.</p></div></div><form class="hgdc-panel__form" data-form><label class="sr-only" for="hgdc-question">Ta question</label><textarea id="hgdc-question" data-input rows="1" maxlength="1000" placeholder="Comment publier ma doc ?" required></textarea><button type="submit" class="hgdc-send" data-send aria-label="Envoyer la question"><svg aria-hidden="true" viewBox="0 0 24 24" width="18" height="18"><path d="M12 19V5M5 12l7-7 7 7" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"></path></svg></button></form><p class="hgdc-panel__note">Réponses générées par IA (Claude, d'Anthropic), à vérifier. Les questions sont conservées 90 jours pour améliorer cette documentation.</p></section></hgdc-assistant><script type="module" src="/_astro/Assistant.astro_astro_type_script_index_0_lang.DWgmlr85.js"></script></body></html>
@@ -60,6 +60,6 @@ Il te faut Node.js 22 ou plus récent, ou Bun. Tout le reste s’installe avec l
60
60
 
61
61
  ## Et ensuite
62
62
 
63
- - [Publier avec HGDC Host](/guides/publier/) pour mettre le site en ligne.
63
+ - [Publier avec Host](/guides/publier/) pour mettre le site en ligne.
64
64
  - [Écrire en MDX](/guides/ecrire/) pour les titres, les liens, les images et le code.
65
65
  - [docs.json](/reference/docs-json/) pour toutes les options.