freecodecamp-universe/marketplace

astro

Guidelines for working on Astro projects. Use whenever you detect an Astro project e.g. the project contains one or more .astro files or has astro as a dependency.

First seen Jul 29, 2026

Installation

$ npx skills add freecodecamp-universe/marketplace --skill astro

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from freecodecamp-universe/marketplace · top by installs.

npx skills add freecodecamp-universe/marketplace

Browse all from freecodecamp-universe/marketplace

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 8
License BSD 3-Clause License
Default branch main
Open issues 1
Status Active

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 2,343 B
  • docs SUMMARY.md 176 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 72 installs

SKILL.md

Astro Guidelines

Minimal props

Components should specify a minimal Props interface that contains just the data a component needs. Do not anticipate future needs, if the component does not currently use a property it should not be in the Props.

Any data passed into the component should not include properties that are not specified in the Props. Extra fields should be stripped out, otherwise they will end up in the production html.

Example

If a Button component has

interface Props {
  user: { name: string };
}

and the parent has the following data

const aUser = {
  name: "Any Thing",
  id: "123abc",
};

strip the 'id' in the component script first, so you have

const propUser = {
  name: "Any Thing",
};

and only use propUser in the template

---
import Button from './Button.astro';
const propUser = {
  name: 'Any Thing',
}
---
<Button user={propUser} />

Avoid null returns

If using both @astro/react and @astro/mdx, components rendered with client:\* directive should not return null. If they do, they will trigger a spurious "Invalid hook call." warning. To avoid this, return <></> (i.e. an empty fragment) instead of null.

Fonts

Do not use @import url(...) or @font-face{} to add fonts to style sheets. Instead use Astro's fontProviders which will optimize font loading. Guide.

Prefer .astro components

Even if the application supports other UI frameworks (React, Vue etc.), use them sparingly. If a component does not need interactivity, use a .astro component instead. This makes it clear that hydration is not possible and gives access to powerful .astro specific features like script directives and build time javascript execution.

When creating new components, only use a UI framework component if either of the following is true. The component is inherently interactive or it needs to be imported by a UI framework component. If the static component can be passed into the UI component via a <slot>, then the static component should come from a .astro file.