astro-corelisted
Install: claude install-skill Sheshiyer/skill-clusters
# Astro Core
Shared model for the `astro` cluster. The rendering and content decisions below shape every
page; keep them consistent. For full implementation, see `astro-framework`.
## 1. Rendering mode (decide first)
| Need | Mode |
|---|---|
| Content known at build time (marketing, docs, blog) | **Static (SSG)** — the default; fastest, cheapest |
| Per-request data (auth, personalization, form POST) | **On-demand (SSR)** — set `export const prerender = false` on that route |
| Mostly static with a few dynamic fragments | **Static page + server islands** (`server:defer`) — render the shell statically, stream the dynamic piece |
| Mixed across the site | **Hybrid** — static by default, opt specific routes into SSR |
**Ship static by default; opt into SSR only where required.** Server islands keep a page static
while deferring a dynamic fragment — prefer them over making the whole route SSR.
## 2. Islands & hydration
Astro ships zero JS by default. A framework component is static HTML unless you add a directive:
- `client:load` — hydrate immediately (above-the-fold interactivity).
- `client:idle` — when the browser is idle (non-urgent).
- `client:visible` — when scrolled into view (best default for below-the-fold).
- `client:media` — when a media query matches.
- `client:only` — skip SSR, render only on the client (for client-only libs).
Keep islands small and hydrate at the **latest** directive that works.
## 3. Content (Content Layer & collections)
- **Content coll