Astro - Advanced Developer
/install astro-advanced
Astro Advanced Skill
This skill provides production-grade guidance for Astro projects — from initial scaffolding through deployment, caching, and performance tuning. It covers the patterns that actually matter in real projects and the mistakes that actually happen.
How to use this skill
- Read this file first for the core workflow and decision tree.
- Consult the reference files in
references/for deep dives on specific topics:references/setup-and-structure.md— Project creation, file structure, config, adaptersreferences/rendering-modes.md— SSG vs SSR vs Hybrid, when to use each, caching strategiesreferences/seo.md— Meta tags, Open Graph, JSON-LD, sitemaps, canonical URLsreferences/islands-and-vue.md— Island architecture, client directives, Vue/React/Svelte integrationreferences/content-and-data.md— Content collections, data fetching, dynamic routesreferences/deployment.md— Adapters, static hosts, serverless, environment variablesreferences/performance.md— Image optimization, bundle analysis, hydration controlreferences/troubleshooting.md— Common errors and fixes organized by symptom
Core decision tree
When helping with an Astro project, follow this sequence:
1. Identify the rendering strategy first
This is the single most important decision in any Astro project. Everything else flows from it.
- Pure static site (blog, docs, marketing)? → SSG (default). No adapter needed.
- Needs user-specific data, auth, or real-time content? → SSR with an adapter.
- Mostly static but a few dynamic pages? → Hybrid mode. Set
output: 'static'in config and useexport const prerender = falseon dynamic pages.
2. Pick the right adapter
Only needed for SSR or hybrid:
- Vercel →
@astrojs/vercel(serverless or edge) - Netlify →
@astrojs/netlify - Cloudflare Pages →
@astrojs/cloudflare - Self-hosted Node →
@astrojs/node(standalone or middleware)
3. Set up integrations
Add only what you need. Each integration is a potential build-time dependency:
# Common additions
npx astro add vue # Vue islands
npx astro add tailwind # Tailwind CSS
npx astro add mdx # MDX support
npx astro add sitemap # Auto sitemap generation
4. Establish content strategy
- Few pages, hand-authored → Regular
.astropages in/src/pages - Blog/docs with structured content → Content collections with Zod schemas
- CMS-driven → Fetch at build time (SSG) or runtime (SSR)
5. Apply SEO from the start
Don't bolt it on later. See references/seo.md for the full pattern, but at minimum:
- Create a reusable
\x3CSEO>component for head tags - Set up canonical URLs
- Add structured data (JSON-LD) for key pages
- Generate sitemap via
@astrojs/sitemap
Key patterns to always follow
Layout pattern
Every page should use a layout. Layouts handle \x3Chtml>, \x3Chead>, and shared chrome:
---
// src/layouts/Base.astro
import SEO from '../components/SEO.astro';
const { title, description } = Astro.props;
---
\x3Chtml lang="en">
\x3Chead>
\x3CSEO title={title} description={description} />
\x3C/head>
\x3Cbody>
\x3Cnav>\x3C!-- shared nav -->\x3C/nav>
\x3Cslot />
\x3Cfooter>\x3C!-- shared footer -->\x3C/footer>
\x3C/body>
\x3C/html>
Island pattern
Static by default. Only hydrate what needs interactivity:
\x3C!-- Static: renders HTML, ships zero JS -->
\x3CCard title="Hello" />
\x3C!-- Interactive: hydrates on load -->
\x3CCounter client:load />
\x3C!-- Interactive: hydrates when visible (lazy) -->
\x3CImageGallery client:visible />
The #1 Astro mistake: forgetting client:* on a component that needs interactivity,
then wondering why click handlers don't work.
SSR caching pattern
SSR without caching is just a slow website. Always pair SSR with a caching strategy:
// In an SSR endpoint or page
return new Response(JSON.stringify(data), {
headers: {
"Cache-Control": "public, s-maxage=60, stale-while-revalidate=300",
"Content-Type": "application/json"
}
});
When things go wrong
Read references/troubleshooting.md for a symptom-based guide. The top 5 issues:
- "Component doesn't do anything" → Missing
client:*directive - Build fails after adding integration → Version mismatch, check
package.json - SSR returns 500 → Missing adapter or wrong
outputmode in config - Broken links after deploy → Base path not set, or trailing slash mismatch
- Hydration mismatch errors → Server/client HTML differs (conditional rendering, dates, randomness)
File output conventions
When generating Astro project files:
- Always include the frontmatter fence (
---) even if empty - Use
.astroextension for Astro components and pages - Place pages in
src/pages/, components insrc/components/, layouts insrc/layouts/ - Use TypeScript in frontmatter when the project uses TS
- Include
astro.config.mjswith only the integrations and settings actually needed
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install astro-advanced - 安装完成后,直接呼叫该 Skill 的名称或使用
/astro-advanced触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
Astro - Advanced Developer 是什么?
Comprehensive skill for building, configuring, and troubleshooting Astro projects. Use this skill whenever the user mentions Astro, .astro files, Astro confi... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 138 次。
如何安装 Astro - Advanced Developer?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install astro-advanced」即可一键安装,无需额外配置。
Astro - Advanced Developer 是免费的吗?
是的,Astro - Advanced Developer 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
Astro - Advanced Developer 支持哪些平台?
Astro - Advanced Developer 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 Astro - Advanced Developer?
由 EncryptShawn(@encryptshawn)开发并维护,当前版本 v1.0.0。