Gestion de Site Astro — Connaissances de l'Agent
Capacités
Vous pouvez gérer un site statique Astro grâce à ces opérations :
- Créer, modifier et supprimer des articles de blog (Markdown/MDX dans les collections de contenu)
- Importer des documents (.docx, .pdf) et les convertir en Markdown
- Télécharger et organiser des images dans
src/assets/ - Modifier des composants (.astro), des layouts et des pages
- Modifier des fichiers MDX avec des composants interactifs
- Modifier les styles globaux et par composant
- Pousser les modifications vers Git pour un déploiement automatique sur Cloudflare Workers (ou exécuter
npx wrangler deploy) - Exécuter des commandes npm (build, dev, ajout de packages)
Collections de Contenu
Les collections de contenu utilisent src/content/ avec un schéma défini dans src/content/config.ts.
Articles de Blog
Emplacement : src/content/blog/*.md ou *.mdx
Frontmatter requis :
---
title: "Titre de l'article"
description: "Description SEO"
pubDate: 2024-01-15
---
Champs optionnels : updatedDate, heroImage, draft, tags
Créer un Article
- Écrire le fichier Markdown avec le frontmatter dans
src/content/blog/<slug>.md - Placer les images dans
src/assets/<slug>/ - Référencer les images :
 - Git add, commit, push pour déployer
Interroger les Collections
Dans les pages .astro :
---
import { getCollection } from "astro:content";
const posts = await getCollection("blog");
const sorted = posts.sort((a, b) => b.data.pubDate.valueOf() - a.data.pubDate.valueOf());
---
Modèles de Composants
Composant .astro de base
---
const { title, class: className } = Astro.props;
---
<section class:list={["section", className]}>
<h2>{title}</h2>
<slot />
</section>
<style>
.section { padding: 2rem; }
</style>
Modèle de Layout
---
import BaseHead from "../components/BaseHead.astro";
import Header from "../components/Header.astro";
import Footer from "../components/Footer.astro";
const { title, description } = Astro.props;
---
<html lang="fr">
<head><BaseHead title={title} description={description} /></head>
<body>
<Header />
<main><slot /></main>
<Footer />
</body>
</html>
Routes Dynamiques
Fichier : src/pages/blog/[...slug].astro
---
import { getCollection } from "astro:content";
export async function getStaticPaths() {
const posts = await getCollection("blog");
return posts.map((post) => ({ params: { slug: post.slug }, props: post }));
}
const post = Astro.props;
const { Content } = await post.render();
---
<Content />
Règles de Sécurité
- NE JAMAIS supprimer le répertoire
.git - NE JAMAIS supprimer
node_modules/oupackage-lock.jsonsauf pour une réinstallation - NE JAMAIS forcer un push (
git push --force) - NE JAMAIS pousser vers des branches autres que la branche de déploiement configurée
- Ne PAS modifier
astro.config.mjsouwrangler.tomlsans demande explicite de l'utilisateur - NE JAMAIS exécuter
rm -rfsur la racine du projet - Demander confirmation avant de supprimer un fichier de composant ou de page
Tâches Courantes
Ajouter un article de blog
write_filepour créersrc/content/blog/<slug>.mdavec frontmatter + contenugit_operationsstatus → add → commit → push
Importer un document
convert_documentavec le chemin du fichier téléchargéread_filele Markdown généré pour le réviser- Modifier le frontmatter si nécessaire avec
write_file git_operationsadd → commit → push
Modifier un composant
read_filele composant pour comprendre le code actuelwrite_fileavec le composant mis à jourgit_operationsadd → commit → push
Changer le style du site
read_filele fichier CSS ou le composant concernéwrite_fileavec les styles mis à jourgit_operationsadd → commit → push
Télécharger une image
- Enregistrer l'image dans
src/assets/<dossier>/avecwrite_fileourun_command - Référencer en Markdown :
 - Ou en .astro :
import img from "~/assets/<dossier>/image.jpg"

