Astro Site Management – Agentenwissen
Fähigkeiten
Du kannst eine Astro-Statikseite über diese Operationen verwalten:
- Blogbeiträge erstellen, bearbeiten und löschen (Markdown/MDX in Content Collections)
- Dokumente (.docx, .pdf) importieren und in Markdown konvertieren
- Bilder in
src/assets/hochladen und organisieren - Komponenten (.astro), Layouts und Seiten bearbeiten
- MDX-Dateien mit interaktiven Komponenten bearbeiten
- Globale und komponentenbezogene Stile ändern
- Änderungen per Git für die automatische Cloudflare Workers-Bereitstellung pushen (oder
npx wrangler deployausführen) - npm-Befehle ausführen (build, dev, Pakete hinzufügen)
Content Collections
Content Collections verwenden src/content/ mit einem Schema, das in src/content/config.ts definiert ist.
Blogbeiträge
Ort: src/content/blog/*.md oder *.mdx
Erforderliches Frontmatter:
---
title: "Beitragstitel"
description: "SEO-Beschreibung"
pubDate: 2024-01-15
---
Optionale Felder: updatedDate, heroImage, draft, tags
Beitrag erstellen
- Schreibe die Markdown-Datei mit Frontmatter nach
src/content/blog/<slug>.md - Platziere Bilder in
src/assets/<slug>/ - Bilder referenzieren:
 - Git add, commit, push zur Bereitstellung
Collections abfragen
In .astro-Seiten:
---
import { getCollection } from "astro:content";
const posts = await getCollection("blog");
const sorted = posts.sort((a, b) => b.data.pubDate.valueOf() - a.data.pubDate.valueOf());
---
Komponentenmuster
Einfache .astro-Komponente
---
const { title, class: className } = Astro.props;
---
<section class:list={["section", className]}>
<h2>{title}</h2>
<slot />
</section>
<style>
.section { padding: 2rem; }
</style>
Layout-Muster
---
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="de">
<head><BaseHead title={title} description={description} /></head>
<body>
<Header />
<main><slot /></main>
<Footer />
</body>
</html>
Dynamische Routen
Datei: 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 />
Sicherheitsregeln
- NIEMALS das
.git-Verzeichnis löschen - NIEMALS
node_modules/oderpackage-lock.jsonlöschen, es sei denn, es wird neu installiert - NIEMALS Force-Push (
git push --force) durchführen - NIEMALS in andere Branches pushen als den konfigurierten Bereitstellungsbranch
astro.config.mjsoderwrangler.tomlNICHT ohne explizite Benutzeranfrage ändern- NIEMALS
rm -rfauf dem Projektstamm ausführen - Vor dem Löschen einer Komponenten- oder Seitendatei um Bestätigung fragen
Häufige Aufgaben
Blogbeitrag hinzufügen
write_filezum Erstellen vonsrc/content/blog/<slug>.mdmit Frontmatter + Inhaltgit_operationsstatus → add → commit → push
Dokument importieren
convert_documentmit dem hochgeladenen Dateipfadread_filedes generierten Markdowns zur Überprüfung- Frontmatter bei Bedarf mit
write_filebearbeiten git_operationsadd → commit → push
Komponente bearbeiten
read_fileder Komponente, um den aktuellen Code zu verstehenwrite_filemit der aktualisierten Komponentegit_operationsadd → commit → push
Seitenstyling ändern
read_fileder relevanten CSS-Datei oder Komponentewrite_filemit aktualisierten Stilengit_operationsadd → commit → push
Bild hochladen
- Bild mit
write_fileoderrun_commandinsrc/assets/<ordner>/speichern - Im Markdown referenzieren:
 - Oder in .astro:
import img from "~/assets/<ordner>/image.jpg"

