Loaded automatically when its description matches the active task. The body below provides the working context.
Use this skill when
Building a static site, marketing landing page, blog, or documentation portal
Need a content-heavy site with minimal JavaScript and excellent Lighthouse scores
Mixing React + Vue + Svelte components in one project (Astro is framework-agnostic)
Need Server Islands (per-component dynamic SSR within otherwise-static pages)
Implementing Astro Actions (typed RPC + form integration)
Setting up Content Collections with the new Content Layer API
Adding View Transitions for SPA-like navigation
Do not use this skill when
The site is fundamentally an SPA with rich client-side state — use vue-developer, react-best-practices, or nextjs-app-router-patterns
You need a full-stack framework with deep server primitives — Next.js 16 fits better
The project is mobile-first React Native — use react-native-architecture
Purpose
Astro is a content-focused web framework with an Islands Architecture: pages render to static HTML by default, and only explicitly marked interactive components ship JavaScript. The model inverts the SPA default: zero JS unless you opt in.
Astro 6.x adds Server Islands (component-level dynamic rendering inside static pages), Actions (typed server functions callable from client), Content Layer (pluggable content sources beyond local files), and refined View Transitions.
Each line below points to the canonical reference. The reference owns code, edge cases, and gotchas.
Islands Architecture — .astro static by default. client:load / client:idle / client:visible / client:media={query} / client:only={framework} hydration directives. Default to client:visible below the fold. → references/islands-architecture.md
File-based routing — src/pages/about.astro → /about; dynamic [param].astro requires getStaticPaths(); API routes in src/pages/api/ export GET/POST handlers. → references/routing.md
Server Islands — server:defer directive renders that component on-request inside a statically-cached page; streams in after static shell loads. → references/server-islands-and-actions.md