agentleFS
G1JoshiG1Joshi/Agent-Skills/skills/frameworks/astro/SKILL.md

astro

Skill15 starsChanged 43 days agoMITView on GitHub

Expert Astro framework assistance covering content collections, Islands architecture, zero-JS by default, and multi-framework integration. Use when building content-focused websites, blogs, documentation, or marketing pages.

17 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use accessibility, seo and 1 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • ElasticSkill

    accessibility

    Accessibility guidance for Kibana. Use this skill when working with or reviewing EUI components, resolving a11y-related (@elastic/eui) ESLint issues, and ensuring proper use of ARIA attributes, focus management, keyboard interactions, and accessible naming conventions.

    Also in 3 projects that use this

  • nilssonrSkill

    seo

    Full SEO workflow for auditing pages and creating SEO-optimized content. Provides checklists with educational explanations aligned with Google Search Central documentation.

    Also in 3 projects that use this

  • BlockSkill

    frontend-design

    Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.

    Also in 3 projects that use this

The file

We split this skill into the rules it gives an agent

7 rules. 0 are common, 0 are distinctive, and 7 are very specific to this project.

  • 0

    Common

    Most of the 16 edited versions we read keep these.

  • 0

    Distinctive

    This author's own choices. Worth a look.

  • 7

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Use Astro Islands architecture with client:visible or client:idle:

    line 130
  2. Very specific:

    Use Astro Server Islands (server:defer) to defer slow, dynamic parts of static pages for instant TTFB.

    line 153
  3. Very specific:

    Use <Image /> component from astro:assets to automate WebP conversion and responsive srcset.

    line 155
  4. Very specific:

    Keep interactive islands isolated and small (client:idle or client:visible).

    line 156
  5. Very specific:

    Use client:load on components below the fold.

    line 160
  6. Very specific:

    Import client UI framework libraries into .astro frontmatter unless rendering them as islands.

    line 161
  7. Very specific:

    Use client-side navigation (ViewTransitions) without auditing third-party script re-execution.

    line 162

“Common” is measured: kept by at least 6 in 10 of the 16 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Astro

Astro is a content-driven web framework pioneering Islands Architecture, shipping zero client-side JavaScript by default and hydrating interactive components on demand.

When to Use

  • Content-Driven Websites & Portals: Blogs, documentation, marketing sites, and e-commerce product catalogs.
  • Zero-JS Default Architecture: Delivering maximum Lighthouse performance with Islands Architecture.
  • Multi-Framework Integrations: Mixing React, Vue, Svelte, and Solid components in a single project.
  • Hybrid Static & Server-Rendered Sites: Pre-rendering static pages while utilizing SSR routes for authenticated dashboards.

Quick Start

---
// Server-side code (Frontmatter) runs at build/request time
const data = await fetch('https://api.myjson.com').then(r => r.json());
---

<html>
  <body>
    <h1>{data.title}</h1>
    <!-- Client Directive: This React component hydrates on load -->
    <MyReactComponent client:load />

    <!-- This Svelte component hydrates only when visible -->
    <MySvelteComponent client:visible />
  </body>
</html>

Core Concepts

Component Islands & Client Directives

Hydrating JavaScript only where interactive functionality is required:

---
// Server-side script runs only during build or request rendering
import Header from '../components/Header.astro';
import InteractiveCart from '../components/InteractiveCart.jsx';
import Footer from '../components/Footer.astro';

const pageTitle = "Astro 5 E-Commerce";
---

<html lang="en">
  <head>
    <title>{pageTitle}</title>
  </head>
  <body>
    <!-- 0KB JavaScript: Static HTML -->
    <Header title={pageTitle} />

    <main>
      <h1>Featured Catalog</h1>
      <!-- Island hydrated only when visible in viewport -->
      <InteractiveCart client:visible initialCount={0} />
    </main>

    <!-- 0KB JavaScript -->
    <Footer />
  </body>
</html>

Content Collections with Type-Safe Schemas

Validating Markdown and MDX content with Zod schemas:

// src/content/config.ts
import { defineCollection, z } from "astro:content";

const blogCollection = defineCollection({
  type: "content",
  schema: z.object({
    title: z.string(),
    publishDate: z.date(),
    author: z.string().default("Core Team"),
    tags: z.array(z.string()),
    draft: z.boolean().default(false),
  }),
});

export const collections = {
  blog: blogCollection,
};

Server Endpoints & Dynamic API Routes

Exposing REST endpoints for dynamic data fetching:

// src/pages/api/newsletter.ts
import type { APIRoute } from "astro";

export const POST: APIRoute = async ({ request }) => {
  const data = await request.json();
  const email = data.email;

  if (!email || !email.includes("@")) {
    return new Response(JSON.stringify({ error: "Valid email required" }), {
      status: 400,
      headers: { "Content-Type": "application/json" },
    });
  }

  return new Response(JSON.stringify({ message: "Subscribed successfully" }), {
    status: 200,
    headers: { "Content-Type": "application/json" },
  });
};

Common Patterns

Interactive Component Island with Client Directives

Problem: Shipping unnecessary JavaScript for largely static content pages.

Solution: Use Astro Islands architecture with client:visible or client:idle:

---
// src/pages/index.astro
import Layout from '../layouts/Layout.astro';
import StaticHero from '../components/StaticHero.astro';
import SearchBar from '../components/SearchBar.jsx'; // React component
---

<Layout title="Welcome">
  <!-- Rendered to pure zero-JS HTML -->
  <StaticHero title="Fast by default" />

  <!-- Hydrated only when visible in viewport -->
  <SearchBar client:visible />
</Layout>

Best Practices

Do:

  • Use Astro Server Islands (server:defer) to defer slow, dynamic parts of static pages for instant TTFB.
  • Leverage Content Collections for all Markdown and MDX files to ensure compile-time schema validation.
  • Use <Image /> component from astro:assets to automate WebP conversion and responsive srcset.
  • Keep interactive islands isolated and small (client:idle or client:visible).

Don't:

  • Use client:load on components below the fold; hydrate only when necessary.
  • Import client UI framework libraries into .astro frontmatter unless rendering them as islands.
  • Use client-side navigation (ViewTransitions) without auditing third-party script re-execution.

Troubleshooting

ErrorCauseSolution
Cannot find module '../components/...'Typo in component import or missing .astro file extension.Explicitly include .astro extension on all Astro component imports.
document is not definedAccessing browser DOM during static build SSR phase.Guard DOM access inside typeof document !== 'undefined' or client:only.
Content collection schema validation failedMarkdown frontmatter does not match Zod schema in src/content/config.ts.Correct frontmatter fields to adhere to the defined collection schema.

References

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.