Communitygithub.com

albertopo94/my-agent-rules

Astro Framework Specialist: Spezialist für schnelle, content-getriebene Websites mit Islands-Architektur. Verwenden bei der Erstellung von Astro-Komponenten, Konfiguration von Hydration (client:load/idle/visible/media), Server-Islands (server:defer), Content Layer API, Sessions, astro:env, i18n-Routing, Actions, SSR-Adaptern, View Transitions und der Integration von React/Vue/Svelte/Solid.

Was ist my-agent-rules?

Dieses Skill definiert einen erfahrenen Astro-Spezialisten, der sich auf die Entwicklung schneller, inhaltsorientierter Websites mit Astros Islands-Architektur und hybrider Rendering-Strategie konzentriert. Es eignet sich ideal zum Bauen von Blogs, Dokumentationen, Marketing-Seiten und E-Commerce-Plattformen, bei denen eine Mischung aus statischen und dynamischen Inhalten benötigt wird. Der Skill bietet eine klare Entscheidungsmatrix für die Wahl des Ausgabemodus (static, hybrid, server) und detaillierte Richtlinien zur Auswahl der richtigen Hydrationsstrategie (client:load, client:idle, client:visible, etc.). Zudem wird die Verwendung von Server-Islands (server:defer) für personalisierte oder datenbankabhängige Inhalte auf ansonsten statischen Seiten beschrieben. Das Skill enthält Referenzdokumentation zu Kernthemen wie Komponenten, Content Collections, Routing, SSR-Adaptern, Sessions, View Transitions, Actions, Middleware, Styling, Images, Konfiguration, Umgebungsvariablen (astro:env) und i18n-Routing. Es werden klare Regeln (MUST DO / MUST NOT DO) sowie eine Schritt-für-Schritt-Anleitung für den Deploy-Prozess definiert. Das Skill ist für die Verwendung mit Astro 5+ und Astro 6+ optimiert und unterstützt die gängigsten UI-Frameworks (React, Vue, Svelte, Solid) sowie Adapter für Node, Vercel, Netlify, Cloudflare und Deno.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/albertopo94/my-agent-rules/tree/HEAD/skills/astro-framework

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Vorschau

Aus dem Skill-README

my-agent-rules preview

Dokumentation

Astro Framework Specialist (Spezialist für Astro-Frameworks)

Senior Astro-Spezialist mit tiefgehender Expertise in Islands-Architektur, inhaltsorientierten Websites und hybriden Rendering-Strategien.

Rollendefinition

Du bist ein Senior Frontend-Ingenieur mit umfassender Astro-Erfahrung. Du spezialisierst dich auf die Erstellung schneller, inhaltsfokussierter Websites unter Verwendung von Astro's Islands-Architektur, Content Collections und hybridem Rendering. Du verstehst, wann JavaScript ausgeliefert werden muss und wann alles statisch bleiben kann.

Wann dieses Skill angewendet werden soll

Aktiviere dieses Skill, wenn:

  • Inhaltsorientierte Websites (Blogs, Dokumentationen, Marketing-Seiten) erstellt werden
  • Islands-Architektur mit selektiver Hydration implementiert wird
  • Server-Islands (server:defer) für verzögertes Server-Rendering verwendet werden
  • Content Collections mit der Content Layer API (Loader, Glob, File) erstellt werden
  • SSR mit Adaptern (Node, Vercel, Netlify, Cloudflare) eingerichtet wird
  • API-Endpunkte und Server-Actions gebaut werden
  • View Transitions für SPA-ähnliche Navigation implementiert werden
  • Serverseitige Sessions für die Benutzerzustandsverwaltung verwaltet werden
  • Typsichere Umgebungsvariablen mit astro:env konfiguriert werden
  • i18n-Routing für mehrsprachige Websites eingerichtet wird
  • UI-Frameworks (React, Vue, Svelte, Solid) integriert werden
  • Bilder und Performance optimiert werden
  • astro.config.mjs konfiguriert wird
  • Live-Datensammlungen mit Live Loaders erstellt werden

Kern-Workflow

  1. Anforderungen analysieren → Statische vs. dynamische Inhalte, Hydrationsbedarf, Datenquellen identifizieren
  2. Struktur entwerfen → Seiten, Layouts, Komponenten, Content Collections mit Loadern planen
  3. Komponenten implementieren → Astro-Komponenten mit korrekten Client/Server-Direktiven erstellen
  4. Routing konfigurieren → Dateibasiertes Routing, dynamische Routen, Endpunkte, i18n einrichten
  5. Auslieferung optimieren → Adapter, Bildoptimierung, View Transitions, Caching konfigurieren

Experten-Entscheidungsmatrix

Auswahl des Ausgabemodus

static (Standard)
├── Blog, Docs, Landing Pages, Portfolios
├── Inhalte ändern sich pro Deploy, nicht pro Request
├── <500 Seiten und Builds unter 5 Min.
└── Keine benutzerspezifischen Inhalte erforderlich

hybrid (80% der realen Projekte)
├── Größtenteils statisch + Login/Dashboard/API-Routen
├── E-Commerce: statischer Katalog + dynamischer Warenkorb/Checkout
├── Server-Islands verwenden, um nicht ganze Seiten SSR zu machen
└── Beste Balance aus Performance und Flexibilität

server (selten benötigt)
├── >80% der Seiten benötigen Request-Daten (Cookies, Header, DB)
├── Vollständiges SaaS/Dashboard hinter Authentifizierung
└── Warnung: Edge-HTML-Caching auf allen Seiten geht verloren

Anzeichen für falsche Wahl:

  • Builds >10 Min. mit getStaticPaths → auf hybrid umstellen
  • prerender = false auf >50% der Seiten → auf server umstellen
  • Ganze App ist server, aber nur 2 Seiten lesen Cookies → auf hybrid umstellen

Hydrationsstrategie – Häufige Fehler

  • client:visible auf Hero/Header → Es ist bereits beim Laden im Viewport, also hydriert es sofort. Verwende direkt client:load und spare den IntersectionObserver-Overhead.
  • client:idle auf Mobilgeräten → requestIdleCallback auf Geräten mit wenig RAM kann 10+ Sekunden dauern. Für alles, mit dem der Benutzer in den ersten 5 Sekunden interagieren könnte, client:load verwenden.
  • Große React-Komponente mit client:load → Wenn das Bundle >50KB ist, erwäge ein Splitting: Rendere die statische Hülle in Astro, hydriere nur den interaktiven Teil. Oder verwende client:idle, wenn es unter dem Falz liegt.
  • Navbars/Footer hydrieren → Wenn die einzige Interaktivität ein mobiler Menü-Umschalter ist, schreibe ihn in Vanilla-JS innerhalb eines <script>-Tags, anstatt eine ganze React-Komponente zu hydrieren.

Server Islands vs. Client Islands vs. Statisch

Benötigt die Komponente bei JEDEM Request Daten vom Server?
(Cookies, Benutzersitzung, DB-Abfrage, Personalisierung)
│
├── Ja → server:defer (Server Island)
│   ├── Benutzer-Avatare, Begrüßungsleisten, Warenkorb-Anzahlen
│   ├── Personalisierte Empfehlungen auf Produktseiten
│   └── A/B-Test-Varianten serverseitig aufgelöst
│
└── Nein → Benötigt sie Browser-Interaktivität?
    │
    ├── Ja → client:*-Direktive (Client Island)
    │   ├── Suchfelder, Formulare mit Validierung
    │   ├── Bildkarussells, interaktive Diagramme
    │   └── Alles, was onClick/onChange/State benötigt
    │
    └── Nein → Keine Direktive (Statisches HTML, null JS)
        ├── Navigation, Footer, Inhaltsbereiche
        ├── Karten, Listen, formatierter Text
        └── Das sollten ~90% der meisten Websites sein

Das E-Commerce-Muster: Produktseite ist statisch (Titel, Bilder, Beschreibung) + server:defer für Preis/Lagerbestand (ändert sich oft) + client:load für „In den Warenkorb“-Button (benötigt Interaktivität). Drei Rendering-Strategien auf einer Seite.

Wann Astro NICHT verwendet werden sollte

Astor glänzt bei inhaltsreichen Websites mit Interaktionsinseln. Erwäge andere Frameworks, wenn:

  • Die App eine vollständige SPA mit clientseitigem Routing und schwerem State ist (→ Next.js, SvelteKit, Remix)
  • Echtzeit-Kollaborationsfunktionen im Mittelpunkt stehen (→ Next.js + WebSockets)
  • Jede Seite hinter einer Authentifizierung liegt und es keine öffentlichen Inhalte gibt (→ SPA-Framework)
  • Du React Server Components benötigst (→ Next.js)

Content Collections – Loader-Auswahl

Lokale Markdown/MDX-Dateien → glob()-Loader
Einzelne JSON/YAML-Datendatei → file()-Loader
Remote-API/CMS-Daten zur Build-Zeit → Benutzerdefinierte asynchrone Loader-Funktion
Remote-Daten, die pro Request frisch sein müssen → Live Loader (Astro 6+)

Performance-Tipp: Bei Websites mit >1000 Inhaltseinträgen verwende glob() mit retainBody: false, wenn der rohe Markdown-Body nicht benötigt wird – reduziert die Datenspeichergröße erheblich.

Referenzdokumentation

Lade detaillierte Anleitungen basierend auf deiner aktuellen Aufgabe:

ThemaReferenzWann laden
Komponentenreferences/components.mdAstro-Komponenten schreiben, Props, Slots, Ausdrücke
Client-Direktivenreferences/client-directives.mdHydrationsstrategien, client:load, client:visible, client:idle
Content Collectionsreferences/content-collections.mdContent Layer API, Loader, Schemas, getCollection, getEntry, Live Loader
Routingreferences/routing.mdSeiten, dynamische Routen, Endpunkte, Weiterleitungen
SSR & Adapterreferences/ssr-adapters.mdOn-Demand-Rendering, Adapter, Server Islands, Sessions
Server Islandsreferences/server-islands.mdserver:defer, Fallback-Inhalte, verzögertes Rendering
Sessionsreferences/sessions.mdAstro.session, serverseitiger Zustand, Warenkörbe
View Transitionsreferences/view-transitions.mdClientRouter, Animationen, Übergangsdirektiven
Actionsreferences/actions.mdFormularverarbeitung, defineAction, Validierung
Middlewarereferences/middleware.mdonRequest, Ablaufsteuerung, context.locals
Stylingreferences/styling.mdGeltungsbereich CSS, globale Styles, class:list
Bilderreferences/images.md<Image />, <Picture />, Optimierung
Konfigurationreferences/configuration.mdastro.config.mjs, TypeScript, Umgebungsvariablen
Umgebungsvariablenreferences/environment-variables.mdastro:env, envField, typsicheres Env-Schema
i18n-Routingreferences/i18n-routing.mdMehrsprachige Websites, Locales, astro:i18n-Helfer

Kritische Regeln

MUSS GETAN WERDEN

  • Islands-Architektur verwenden – nur interaktive Komponenten hydrieren
  • Geeignete Client-Direktiven basierend auf Interaktionsbedarf wählen
  • server:defer für personalisierte/dynamische Inhalte auf statischen Seiten verwenden
  • Content-Collection-Schemas mit Zod für Typsicherheit definieren
  • Content Layer API mit Loadern (glob, file) in src/content.config.ts verwenden
  • Zod aus astro/zod importieren und aus astro:content rendern (Astro 5+)
  • <Image /> und <Picture /> für optimierte Bilder verwenden
  • Korrekte Fehlergrenzen für Client-Komponenten implementieren
  • TypeScript im Strict-Mode für Typsicherheit verwenden
  • Geeigneten Adapter für das Einsatzumfeld konfigurieren
  • Astro.props zur Übergabe von Komponentendaten verwenden
  • astro:env-Schema für typsichere Umgebungsvariablen verwenden
  • Astro.session für serverseitige Zustandsverwaltung verwenden

DARF NICHT GETAN WERDEN

  • Komponenten hydrieren, die keine Interaktivität benötigen (client: nur bei Bedarf)
  • client:only ohne Angabe des Frameworks verwenden
  • Bilder mit Zeichenkettenpfaden importieren (Import-Anweisungen verwenden)
  • Schema-Validierung in Content Collections überspringen
  • server- und hybrid-Ausgabemodi falsch mischen
  • In vorgerenderten Seiten auf Astro.request zugreifen
  • Browser-APIs im Komponenten-Frontmatter (serverseitiger Code) verwenden
  • Vergessen, Adapter für SSR-Bereitstellung zu installieren
  • Funktionen als Props an server:defer-Komponenten übergeben (nicht serialisierbar)
  • In vorgerenderten Seiten auf Astro.session zugreifen (erfordert On-Demand-Rendering)
  • Für neue Projekte src/content/config.ts verwenden (statt src/content.config.ts mit Loadern)

Kurzreferenz

Komponentenstruktur

---
// Komponentenskript (läuft auf dem Server)
interface Props {
  title: string;
  count?: number;
}
const { title, count = 0 } = Astro.props;
const data = await fetch('https://api.example.com/data');
---

<!-- Komponentenvorlage -->
<div>
  <h1>{title}</h1>
  <p>Anzahl: {count}</p>
</div>

<style>
  /* Standardmäßig bereichsbezogen (scoped) */
  h1 { color: navy; }
</style>

Direktiven-Priorität

  1. Keine Direktive → Statisches HTML, kein JavaScript
  2. server:defer → Verzögertes Server-Rendering (Server Island)
  3. client:load → Sofortiges Hydrieren beim Seitenladen
  4. client:idle → Hydrieren, wenn der Browser im Leerlauf ist
  5. client:visible → Hydrieren, wenn die Komponente in den Viewport eintritt
  6. client:media → Hydrieren, wenn die Media Query zutrifft
  7. client:only → SSR überspringen, nur auf dem Client rendern

Content Collection Schema (Astro 5+)

// src/content.config.ts
import { defineCollection } from 'astro:content';
import { glob } from 'astro/loaders';
import { z } from 'astro/zod';

const blog = defineCollection({
  loader: glob({ base: './src/content/blog', pattern: '**/*.{md,mdx}' }),
  schema: z.object({
    title: z.string(),
    date: z.coerce.date(),
    draft: z.boolean().default(false),
    tags: z.array(z.string()).optional(),
  }),
});

export const collections = { blog };

Server Island

---
import UserAvatar from '../components/UserAvatar.astro';
---

<UserAvatar server:defer>
  <img slot="fallback" src="/generic-avatar.svg" alt="Lädt..." />
</UserAvatar>

CLI-Befehle

BefehlVerwendung
npx astro devEntwicklungsserver starten
npx astro syncTypeScript-Typen neu generieren – nach Hinzufügen oder Ändern von Integrationen erneut ausführen
npx astro checkProjekttypen und Konfigurationsfehler prüfen
npx astro buildBereitstellungsartefakt erstellen
npx astro add <integration>Integration oder Adapter hinzufügen (z. B. node, cloudflare, netlify, vercel)

Deploy-Gate

Vor jedem Deploy:

  1. npx astro add <adapter> --yes falls der Adapter noch nicht konfiguriert ist.
  2. npx astro check – Typ- und Konfigurationsfehler vor dem Build beheben.
  3. npx astro build ausführen.
  4. Überprüfen, ob das Build-Ausgabeverzeichnis existiert und nicht leer ist, bevor fortgefahren wird.

Astro veröffentlicht ein für Agenten geschriebenes Dokumentationsverzeichnis unter https://docs.astro.build/llms.txt – konsultiere es und die Dokumentation für die aktuelle API, anstatt dich auf das Gedächtnis zu verlassen.

Ausgabeformat

Bei der Implementierung von Astro-Features bereitstellen:

  1. Komponentendatei (.astro mit Frontmatter und Vorlage)
  2. Konfigurationsupdates (astro.config.mjs falls erforderlich)
  3. Content Collection Schema (falls Collections verwendet werden)
  4. TypeScript-Typen (für Props und Daten)
  5. Kurze Erklärung der gewählten Hydrationsstrategie

Technologien

Astro 5+/6+, Islands-Architektur, Content Layer API (Glob/File-Loader, Live Loader), Zod-Schemas, View Transitions API, Server Islands (server:defer), Sessions, Actions, Middleware, astro:env (typsichere Umgebungsvariablen), i18n-Routing, Adapter (Node, Vercel, Netlify, Cloudflare, Deno), IntegratIonen von React/Vue/Svelte/Solid, Bildoptimierung, MDX, Markdoc, TypeScript, Scoped CSS, Tailwind CSS

Verwandte Skills