astro

Astro web framework patterns for content-driven sites. Covers content collections with Zod schemas and loaders, island architecture with selective hydration directives, view transitions with ClientRouter, server-side and hybrid rendering modes, server islands, Astro DB with astro:db, middleware with onRequest, and framework integrations (React, Svelte, Vue). Use when building content-driven websites, configuring island hydration strategies, setting up view transitions, choosing between static and server rendering, integrating UI framework components, defining content collection schemas, or adding middleware.

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 oakoss/agent-skills/oakoss-agent-skills-astro

Astro

Overview

Astro is an all-in-one web framework for building fast, content-focused websites. It uses an islands architecture that ships zero JavaScript by default, hydrating only interactive components on demand. Components from React, Svelte, Vue, Solid, and Preact can coexist in a single project.

When to use: Content-driven sites (blogs, docs, marketing), portfolios, e-commerce storefronts, any site where most pages are primarily static with isolated interactive regions.

When NOT to use: Highly interactive single-page applications (dashboards, real-time collaboration tools), apps requiring full client-side routing with shared global state across all components.

Quick Reference

PatternAPI / DirectiveKey Points
Content collectiondefineCollection({ loader, schema })Zod schemas, glob/file loaders, type-safe queries
Query collectiongetCollection('blog')Returns typed array, supports filter callback
Single entrygetEntry('blog', 'my-post')Fetch by collection name and entry ID
Island (load)<Component client:load />Hydrate immediately on page load
Island (idle)<Component client:idle />Hydrate when browser is idle
Island (visible)<Component client:visible />Hydrate when component enters viewport
Island (media)<Component client:media="(max-width: 768px)" />Hydrate on media query match
Island (client-only)<Component client:only="react" />Skip SSR, render only on client
View transitions<ClientRouter />Add to <head>, enables SPA-like navigation
Persist statetransition:persistMaintain island state across navigations
Programmatic navigatenavigate(href)Client-side navigation from scripts
Static outputoutput: 'static'Pre-render all pages at build time (default)
Server outputoutput: 'server'Server-render all pages on demand
Hybrid (opt-in SSR)output: 'static' + per-page prerender = falseStatic by default, opt individual pages into SSR
Hybrid (opt-in static)output: 'server' + per-page prerender = trueSSR by default, opt individual pages into static
Server islands<Component server:defer />Defer server rendering for dynamic content in static
MiddlewareonRequest(context, next)Runs before every route, chain with sequence()
Astro DB tabledefineTable({ columns })Type-safe SQL with column definitions
Framework componentImport .jsx / .svelte / .vueAuto-detected by file extension
Integrationastro add reactCLI to add framework adapters and tools
Render contentconst { Content } = await entry.render()Compile Markdown/MDX to component
Dynamic routesgetStaticPaths() + collection queryGenerate pages from collection entries
API endpointexport const GET: APIRouteServer-rendered REST endpoints
Shared island statenanostoresReactive state across framework boundaries
Environment variablesimport.meta.env.PUBLIC_*PUBLIC_ prefix for client-accessible vars
Transition animationtransition:animate="slide"initial, fade, slide, none
Prefetch linksdata-astro-prefetchhover, viewport, load, or false
Collection referencereference('authors')Type-safe cross-collection relations
Script re-executiondata-astro-rerunRe-run <script> on every view transition navigation
Redirectcontext.redirect(url, status)Redirect from middleware or server pages

Common Mistakes

MistakeCorrect Pattern
Adding client: directive to .astro componentsOnly UI framework components (React, Svelte, Vue) accept client:
Using client:load everywhereDefault to client:idle or client:visible; use client:load sparingly
Forgetting framework string with client:onlyMust specify framework: client:only="react"
Mixing framework components in non-Astro filesOnly .astro files can compose components from multiple frameworks
Using output: 'server' for mostly static sitesUse output: 'static' with per-page prerender = false for hybrid
Omitting <ClientRouter /> for view transitionsMust be in <head> of every page (use shared layout)
Content config not at src/content.config.tsFile must be named content.config.ts in src/ root
Not awaiting getCollection() callsAlways await collection queries in frontmatter
Importing from astro:content in client scriptsContent APIs are server-only; pass data as props to client components
Placing middleware outside src/middleware.tsMiddleware must be at src/middleware.ts or src/middleware/index.ts
Passing functions as props to islandsOnly serializable data crosses the server/client boundary
Using transition:persist without matching pagesComponent must appear on both old and new page with same persist value
Missing adapter for server/hybrid modeInstall an adapter: npx astro add vercel (or node, netlify, etc.)

Delegation

  • Pattern discovery: Use Explore agent
  • Build configuration: Use Task agent
  • Code review: Delegate to code-reviewer agent

If the tailwind skill is available, delegate styling and Tailwind CSS configuration to it. If the vitest skill is available, delegate unit testing patterns to it. If the playwright skill is available, delegate end-to-end testing patterns to it. If the vite skill is available, delegate build configuration and Vite plugin setup to it. If the drizzle skill is available, delegate advanced database query patterns to it. If the sentry skill is available, delegate error monitoring and observability setup to it. If the pino-logging skill is available, delegate server-side logging configuration to it. If the tanstack-query skill is available, delegate client-side data fetching and caching to it.

References

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.

Automation

astro

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

playwright

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

ui-ux-polish

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

tanstack-form

No summary provided by upstream source.

Repository SourceNeeds Review