astro

Astro framework patterns for Islands Architecture, client directives (client:load, client:visible, client:idle, client:only, client:media), integrations (MDX, Tailwind, React/Vue/Svelte), View Transitions API, and deployment strategies. Use when building content-focused sites, implementing partial hydration with islands, setting up multi-framework projects, optimizing performance with zero-JS by default, or deploying static/SSR sites.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "astro" with this command: npx skills add briantbr/astro-best-practices/briantbr-astro-best-practices-astro

Astro Framework

Astro 5.x framework for building fast, content-focused websites with Islands Architecture and zero JavaScript by default.

Core Principles

1. Zero JavaScript by Default

Astro ships ZERO JavaScript unless you explicitly add a client directive.

<!-- Static HTML (no JS) -->
<Header />
<Footer />

<!-- Interactive island (JS loaded) -->
<Counter client:idle />

Rule: Only use client directives when components need hooks, state, or browser APIs.

2. Client Directives

DirectiveWhen to UseBehavior
client:loadCritical interaction needed immediatelyHydrates on page load
client:idleNon-critical interactivityHydrates when browser idle
client:visibleBelow the fold contentHydrates when scrolled into view
client:media="(query)"Responsive componentsHydrates when media query matches
client:only="framework"Breaks during SSRSkips SSR, client-only render

Decision tree: Needs immediate interaction? → client:load | Non-critical? → client:idle | Below fold? → client:visible | Only on mobile/desktop? → client:media | Breaks SSR? → client:only

3. Multi-Framework Support

Mix React, Vue, Svelte in the same project:

npx astro add react vue svelte
---
import ReactForm from './Form.jsx';
import VueChart from './Chart.vue';
import SvelteCounter from './Counter.svelte';
---
<ReactForm client:idle />
<VueChart client:visible />
<SvelteCounter client:load />

Quick Start

npm create astro@latest my-project
cd my-project
npx astro add tailwind react
npm run dev

Project Structure

src/
├── components/       # .astro, .jsx, .vue, .svelte
├── layouts/          # Page layouts
├── pages/            # File-based routing
│   └── blog/[slug].astro
├── content/          # Content Collections (Markdown/MDX)
│   └── blog/         # Collection folders
├── styles/           # Global CSS
└── content.config.ts # Content collections schema (Astro 5+)

Configuration

// astro.config.mjs
import { defineConfig } from 'astro/config';
import tailwind from '@astrojs/tailwind';
import react from '@astrojs/react';

export default defineConfig({
  site: 'https://example.com',
  output: 'static',  // or 'server'
  integrations: [tailwind(), react()],
});

Output modes (Astro 5):

  • static - Blog, docs, marketing (default). Use export const prerender = false for SSR pages.
  • server - All pages SSR (requires adapter)

Astro 5 Change: output: 'hybrid' was removed. The hybrid behavior is now the default in static mode.


View Transitions

Enable SPA-like navigation with the Client Router:

---
import { ClientRouter } from 'astro:transitions';
---
<html>
  <head>
    <ClientRouter />
  </head>
  <body><slot /></body>
</html>

Note: In Astro 5, ViewTransitions was renamed to ClientRouter.


Commands

npm run dev              # Start dev server (localhost:4321)
npm run build            # Build for production
npm run preview          # Preview production build
npx astro check          # TypeScript checks

Core Patterns

Organized by priority - load on-demand as needed:

High Priority (Common Use Cases)

Medium Priority (Specific Features)

Low Priority (Advanced)


Real-World Recipes

Complete examples for common scenarios:


External Resources

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

astro-developer

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

analyze-github-action-logs

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

astro

No summary provided by upstream source.

Repository SourceNeeds Review