File contents Astro 开发技能
你是一位资深 Astro 开发工程师。在协助 Astro 项目时,请遵循以下规范。
技术栈强制约束
使用 Astro 4.x 版本
使用 TypeScript,禁止纯 JavaScript 项目
包管理使用 pnpm 优先,npm 次之,禁止混用
代码风格使用 ESLint + Prettier 统一管理
命名规范
组件文件:PascalCase(Header.astro、PostList.astro)
页面目录:kebab-case(src/pages/blog/post/index.astro)
布局文件:PascalCase(BaseLayout.astro、PostLayout.astro)
工具函数:camelCase(formatDate.ts、parseMarkdown.ts)
常量:UPPER_SNAKE_CASE(SITE_TITLE)
内容集合:camelCase(blog、docs)
命名语义化,禁止拼音、无意义缩写
项目结构规范
编码规范
默认组件为零 JS 的 Astro 组件,优先使用 Astro 组件
交互组件使用岛架构,通过 client:* 指令按需水合:
client:load:立即水合,适用于关键交互组件
client:visible:可见时水合,适用于非首屏交互组件
client:idle:空闲时水合,适用于低优先级交互组件
client:only:仅客户端渲染,适用于依赖浏览器 API 的组件
内容集合使用 defineCollection + zod 定义 Schema 校验
集成框架组件(React/Vue/Svelte)必须明确水合策略
页面组件使用 Astro.props 获取参数
使用 Astro.slots 处理插槽内容
注释规范
每个组件顶部必须有中文注释说明用途
复杂布局结构必须添加中文注释说明层级
内容集合 Schema 必须注释说明字段含义
TODO 注释格式:// TODO(作者): 具体待办事项描述
禁止无意义注释,注释必须与代码保持同步
格式规范
统一使用 2 空格缩进,禁止 Tab
单行代码长度不超过 120 字符
组件文件不超过 200 行,超过必须拆分
函数体长度不超过 80 行
使用 Prettier 格式化代码
类型导入使用 import type
代码质量强制要求
禁止使用 any,必须提供明确类型
禁止魔法值:硬编码常量必须定义为命名常量
集合操作前必须判空,使用可选链 ?. 和空值合并 ??
内容集合必须定义 Schema 校验,禁止跳过校验
交互组件必须指定 client:* 指令,禁止全局水合
必须处理内容集合查询为空的情况
环境变量通过 import.meta.env 管理,敏感信息禁止暴露
性能规范
默认零 JS 输出,交互组件按需水合
使用 client:visible 延迟加载非关键交互组件
图片使用 <Image /> 组件自动优化(格式转换、尺寸调整)
字体使用 @fontsource 本地加载,避免布局偏移
静态资源使用 astro:assets 管理
大型内容站使用分页减少单页体积
部署规范
使用 astro build 构建生产包
静态站点输出 dist/ 目录,部署到 CDN 或静态托管
SSR 模式配置 output: 'server',适配对应适配器
使用官方适配器(@astrojs/vercel、@astrojs/netlify 等)
环境变量通过 .env 文件管理,区分开发和生产
最佳实践
使用内容集合管理博客、文档等结构化内容
使用官方集成添加框架支持(@astrojs/react、@astrojs/vue)
使用 @astrojs/mdx 增强 Markdown 内容
使用 @astrojs/sitemap 自动生成站点地图
使用 <ViewTransitions /> 实现页面过渡动画
使用 Astro.url 和 Astro.site 处理 URL 逻辑
1 --- 2 name: astro 3 description: Astro 4 --- 5 6 # Astro 开发技能 7 8 你是一位资深 Astro 开发工程师。在协助 Astro 项目时,请遵循以下规范。 9 10 ## 技术栈强制约束 11 12 - 使用 Astro 4.x 版本 13 - 使用 TypeScript,禁止纯 JavaScript 项目 14 - 包管理使用 pnpm 优先,npm 次之,禁止混用 15 - 代码风格使用 ESLint + Prettier 统一管理 16 17 ## 命名规范 18 19 - 组件文件:PascalCase(`Header.astro`、`PostList.astro`) 20 - 页面目录:kebab-case(`src/pages/blog/post/index.astro`) 21 - 布局文件:PascalCase(`BaseLayout.astro`、`PostLayout.astro`) 22 - 工具函数:camelCase(`formatDate.ts`、`parseMarkdown.ts`) 23 - 常量:UPPER_SNAKE_CASE(`SITE_TITLE`) 24 - 内容集合:camelCase(`blog`、`docs`) 25 - 命名语义化,禁止拼音、无意义缩写 26 27 ## 项目结构规范 28 29 - 目录结构: 30 ``` 31 astro-project/ 32 ├── src/ 33 │ ├── pages/ # 页面路由(基于文件的路由) 34 │ ├── components/ # 组件 35 │ ├── layouts/ # 布局组件 36 │ ├── content/ # 内容集合(Markdown/MDX) 37 │ │ └── config.ts # 内容集合定义 38 │ ├── styles/ # 全局样式 39 │ └── utils/ # 工具函数 40 ├── public/ # 静态资源(原样输出) 41 ├── astro.config.mjs # Astro 配置 42 └── package.json 43 ``` 44 45 ## 编码规范 46 47 - 默认组件为零 JS 的 Astro 组件,优先使用 Astro 组件 48 - 交互组件使用岛架构,通过 `client:*` 指令按需水合: 49 - `client:load`:立即水合,适用于关键交互组件 50 - `client:visible`:可见时水合,适用于非首屏交互组件 51 - `client:idle`:空闲时水合,适用于低优先级交互组件 52 - `client:only`:仅客户端渲染,适用于依赖浏览器 API 的组件 53 - 内容集合使用 `defineCollection` + `zod` 定义 Schema 校验 54 - 集成框架组件(React/Vue/Svelte)必须明确水合策略 55 - 页面组件使用 `Astro.props` 获取参数 56 - 使用 `Astro.slots` 处理插槽内容 57 58 ## 注释规范 59 60 - 每个组件顶部必须有中文注释说明用途 61 - 复杂布局结构必须添加中文注释说明层级 62 - 内容集合 Schema 必须注释说明字段含义 63 - TODO 注释格式:`// TODO(作者): 具体待办事项描述` 64 - 禁止无意义注释,注释必须与代码保持同步 65 66 ## 格式规范 67 68 - 统一使用 2 空格缩进,禁止 Tab 69 - 单行代码长度不超过 120 字符 70 - 组件文件不超过 200 行,超过必须拆分 71 - 函数体长度不超过 80 行 72 - 使用 Prettier 格式化代码 73 - 类型导入使用 `import type` 74 75 ## 代码质量强制要求 76 77 - 禁止使用 `any`,必须提供明确类型 78 - 禁止魔法值:硬编码常量必须定义为命名常量 79 - 集合操作前必须判空,使用可选链 `?.` 和空值合并 `??` 80 - 内容集合必须定义 Schema 校验,禁止跳过校验 81 - 交互组件必须指定 `client:*` 指令,禁止全局水合 82 - 必须处理内容集合查询为空的情况 83 - 环境变量通过 `import.meta.env` 管理,敏感信息禁止暴露 84 85 ## 性能规范 86 87 - 默认零 JS 输出,交互组件按需水合 88 - 使用 `client:visible` 延迟加载非关键交互组件 89 - 图片使用 `<Image />` 组件自动优化(格式转换、尺寸调整) 90 - 字体使用 `@fontsource` 本地加载,避免布局偏移 91 - 静态资源使用 `astro:assets` 管理 92 - 大型内容站使用分页减少单页体积 93 94 ## 部署规范 95 96 - 使用 `astro build` 构建生产包 97 - 静态站点输出 `dist/` 目录,部署到 CDN 或静态托管 98 - SSR 模式配置 `output: 'server'`,适配对应适配器 99 - 使用官方适配器(`@astrojs/vercel`、`@astrojs/netlify` 等) 100 - 环境变量通过 `.env` 文件管理,区分开发和生产 101 102 ## 最佳实践 103 104 - 使用内容集合管理博客、文档等结构化内容 105 - 使用官方集成添加框架支持(`@astrojs/react`、`@astrojs/vue`) 106 - 使用 `@astrojs/mdx` 增强 Markdown 内容 107 - 使用 `@astrojs/sitemap` 自动生成站点地图 108 - 使用 `<ViewTransitions />` 实现页面过渡动画 109 - 使用 `Astro.url` 和 `Astro.site` 处理 URL 逻辑
dkbnull/hello-skill/tree/main/frontend/skills/astro commit 720fe102b2
Frequently asked questions How do I install the Astro skill? Run npx skillmds@latest add dkbnull/astro in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
What does the Astro skill do? Astro It is listed under Web & Frontend on SkillMD.
Is Astro safe to use? This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
Which AI agents work with Astro? This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Is Astro free to use? Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
Who published Astro? dkbnull (@dkbnull) published this skill. Their other Agent Skills are listed on their SkillMD profile.