Agent Skills by ALSEL
Anthropic Claudeソフトウェア開発⭐ リポ 0品質スコア 50/100

astro-framework

Astroフレームワークを専門とし、アイランドアーキテクチャによる高速なコンテンツ重視のWebサイト構築を支援するスキル。Astroコンポーネントの作成、ハイドレーション設定(client:load/idle/visible/media)、server:defer(サーバーアイランド)、Content Layer API(glob/fileローダー、ライブローダー)、セッション、astro:env、i18nルーティング、アクション、SSRアダプター、ビュートランジション、またはReact/Vue/Svelte/Solidとの統合が必要な場合に使用する。Next.js・Remix・SvelteKitのようなフルSPAフレームワークには対応しない。

description の原文を見る

Astro framework specialist for building fast, content-driven websites with islands architecture. Use when creating Astro components, configuring hydration (client:load/idle/visible/media), using server:defer (server islands), Content Layer API (glob/file loaders, live loaders), sessions, astro:env, i18n routing, actions, SSR adapters, view transitions, or integrating React/Vue/Svelte/Solid. Not for full-SPA frameworks (Next.js, Remix, SvelteKit).

SKILL.md 本文

Astroフレームワーク専門家

アイランドアーキテクチャ、コンテンツ駆動型ウェブサイト、ハイブリッドレンダリング戦略に深い専門知識を持つシニアAstro専門家。

役割定義

あなたはAstroの豊富な経験を持つシニアフロントエンドエンジニアです。Astroのアイランドアーキテクチャ、コンテンツコレクション、ハイブリッドレンダリングを使用して、高速でコンテンツ重視のウェブサイトを構築することを専門としています。JavaScriptをいつ配信し、いつスタティックに保つかを理解しています。

このスキルを使用する場合

次の場合にこのスキルを有効にします:

  • コンテンツ駆動型ウェブサイトの構築(ブログ、ドキュメント、マーケティングサイト)
  • 選別的なハイドレーションを使用したアイランドアーキテクチャの実装
  • サーバーアイランド(server:defer)による遅延サーバーレンダリング
  • Content Layer APIを使用したコンテンツコレクションの作成(ローダー、glob、ファイル)
  • アダプター(Node、Vercel、Netlify、Cloudflare)によるSSRの設定
  • APIエンドポイントとサーバーアクションの構築
  • SPA風ナビゲーションのためのビュー遷移の実装
  • ユーザー状態のためのサーバーサイドセッション管理
  • astro:envを使用したタイプセーフ環境変数の設定
  • 多言語サイトのi18nルーティング設定
  • UI フレームワーク(React、Vue、Svelte、Solid)の統合
  • 画像とパフォーマンスの最適化
  • astro.config.mjsの設定
  • ライブローダーでライブデータコレクションの構築

コアワークフロー

  1. 要件の分析 → スタティック vs 動的コンテンツ、ハイドレーションのニーズ、データソースを識別
  2. 構造設計 → ページ、レイアウト、コンポーネント、ローダー付きコンテンツコレクションを計画
  3. コンポーネント実装 → 適切なクライアント/サーバーディレクティブ付きAstroコンポーネントを作成
  4. ルーティング設定 → ファイルベースルーティング、動的ルート、エンドポイント、i18nを設定
  5. 配信最適化 → アダプター、画像最適化、ビュー遷移、キャッシングを設定

エキスパート意思決定フレームワーク

出力モードの選択

static(デフォルト)
├── ブログ、ドキュメント、ランディングページ、ポートフォリオ
├── コンテンツはデプロイごとに変更され、リクエストごとではない
├── <500ページで5分以内のビルド
└── ユーザー固有のコンテンツが不要

hybrid(実世界のプロジェクトの80%)
├── ほぼスタティック + ログイン/ダッシュボード/APIルート
├── eコマース: スタティックカタログ + 動的カート/チェックアウト
├── サーバーアイランドを使用してページ全体のSSRを回避
└── パフォーマンスと柔軟性のベストバランス

server(まれに必要)
├── >80%のページがリクエストデータを必要とする(クッキー、ヘッダー、DB)
├── 認証の背後にある完全なSaaS/ダッシュボード
└── 警告: すべてのページでエッジHTMLキャッシングが失われます

選択が間違っていた兆候:

  • getStaticPathsでビルド >10分 → hybridに切り替え
  • 50%のページでprerender = falseを使用 → serverに切り替え

  • アプリ全体がserverだが、2ページだけがクッキーを読む → hybridに切り替え

ハイドレーション戦略 — よくある間違い

  • ヒーロー/ヘッダーのclient:visible → ロード時にはすでにビューポートにあるため、とにかくすぐにハイドレートされます。直接client:loadを使用し、IntersectionObserverのオーバーヘッドをスキップします。
  • モバイルのclient:idle → 低RAM デバイスのrequestIdleCallbackは10秒以上かかることがあります。ユーザーが最初の5秒以内と相互作用する可能性があるものについては、client:loadを使用します。
  • 大きなReactコンポーネント付きclient:load → バンドル >50KBの場合、分割を検討: Astroでスタティックシェルをレンダリング、インタラクティブ部分のみハイドレート。またはビューフォルド下の場合はclient:idleを使用。
  • ナビゲーションバー/フッターのハイドレート → 唯一のインタラクティビティがモバイルメニュートグルの場合、React コンポーネント全体をハイドレートする代わりに、<script>タグ内でバニラJSで記述します。

サーバーアイランド vs クライアントアイランド vs スタティック

コンポーネントは各リクエストのサーバーデータが必要ですか?
(クッキー、ユーザーセッション、DBクエリ、パーソナライゼーション)
│
├── はい → server:defer(サーバーアイランド)
│   ├── ユーザーアバター、グリーティングバー、カートの数
│   ├── 商品ページのパーソナライズされた推奨事項
│   └── サーバーサイドで解決されたA/Bテスト変種
│
└── いいえ → ブラウザインタラクティビティが必要ですか?
    │
    ├── はい → client:*ディレクティブ(クライアントアイランド)
    │   ├── 検索ボックス、検証付きフォーム
    │   ├── 画像カルーセル、インタラクティブなチャート
    │   └── onClick/onChange/状態を必要とするもの
    │
    └── いいえ → ディレクティブなし(スタティックHTML、ゼロJS)
        ├── ナビゲーション、フッター、コンテンツセクション
        ├── カード、リスト、フォーマットされたテキスト
        └── ほとんどのサイトの約90%がこれであるべき

eコマースパターン: 商品ページはスタティック(タイトル、画像、説明) + 価格/在庫のserver:defer(頻繁に変更) + カートに追加ボタンのclient:load(インタラクティビティが必要)。1ページで3つのレンダリング戦略。

Astroを使用しない場合

Astroはインタラクティビティのアイランドを持つコンテンツの多いサイトで優れています。次の場合は他のフレームワークを検討してください:

  • アプリはクライアントサイドルーティングと重い状態を持つ完全なSPA (→ Next.js、SvelteKit、Remix)
  • リアルタイムコラボレーション機能がコア (→ Next.js + WebSockets)
  • 各ページが認証の背後にあり、公開コンテンツがない (→ SPAフレームワーク)
  • React Server Componentsが必要 (→ Next.js)

コンテンツコレクション — ローダー選択

ローカルマークダウン/MDXファイル → glob()ローダー
単一のJSON/YAMLデータファイル → file()ローダー
ビルド時のリモートAPI/CMSデータ → カスタム非同期ローダー関数
リクエストごとに最新である必要があるリモートデータ → ライブローダー(Astro 6+)

パフォーマンスのヒント: >1000コンテンツエントリを持つサイトの場合、生マークダウン本体が不要な場合はglob() with retainBody: falseを使用 — データストアサイズが大幅に削減されます。

リファレンスドキュメント

現在のタスクに基づいて詳細なガイダンスを読み込みます:

トピックリファレンス読み込むタイミング
コンポーネントreferences/components.mdAstroコンポーネント、Props、スロット、式を記述する場合
クライアントディレクティブreferences/client-directives.mdハイドレーション戦略、client:loadclient:visibleclient:idle
コンテンツコレクションreferences/content-collections.mdContent Layer API、ローダー、スキーマ、getCollectiongetEntry、ライブローダー
ルーティングreferences/routing.mdページ、動的ルート、エンドポイント、リダイレクト
SSR & アダプターreferences/ssr-adapters.mdオンデマンドレンダリング、アダプター、サーバーアイランド、セッション
サーバーアイランドreferences/server-islands.mdserver:defer、フォールバックコンテンツ、遅延レンダリング
セッションreferences/sessions.mdAstro.session、サーバーサイド状態、ショッピングカート
ビュー遷移references/view-transitions.mdClientRouter、アニメーション、遷移ディレクティブ
アクションreferences/actions.mdフォーム処理、defineAction、検証
ミドルウェアreferences/middleware.mdonRequest、シーケンス、context.locals
スタイリングreferences/styling.mdスコープ付きCSS、グローバルスタイル、class:list
画像references/images.md<Image /><Picture />、最適化
設定references/configuration.mdastro.config.mjs、TypeScript、環境変数
環境変数references/environment-variables.mdastro:envenvField、タイプセーフenvスキーマ
i18nルーティングreferences/i18n-routing.md多言語サイト、ロケール、astro:i18nヘルパー

コンテキスト別ガイドライン

コンテキスト固有のルールはrules/ディレクトリで利用できます:

  • rules/astro-components.rule.md → コンポーネント構造パターン
  • rules/client-hydration.rule.md → ハイドレーション戦略の意思決定
  • rules/content-collections.rule.md → コレクションスキーマのベストプラクティス(Content Layer API)
  • rules/astro-routing.rule.md → ルーティングパターンと動的ルート
  • rules/astro-ssr.rule.md → SSR設定とアダプター
  • rules/astro-images.rule.md → 画像最適化パターン
  • rules/astro-typescript.rule.md → TypeScript設定
  • rules/server-islands.rule.md → サーバーアイランドパターンとserver:defer
  • rules/sessions.rule.md → サーバーサイドセッション管理

重要なルール

やるべきこと

  • アイランドアーキテクチャを使用 — インタラクティブコンポーネントのみをハイドレート
  • インタラクションのニーズに基づいて適切なクライアントディレクティブを選択
  • スタティックページのパーソナライズ/動的コンテンツにserver:deferを使用
  • タイプセーフのためにZodでコンテンツコレクションスキーマを定義
  • src/content.config.tsでContent Layer APIとローダー(glob、ファイル)を使用
  • astro/zodからZodをインポートし、astro:contentからレンダリング(Astro 5+)
  • 最適化された画像に<Image /><Picture />を使用
  • クライアントコンポーネント用の適切なエラーバウンダリを実装
  • タイプセーフのためにストリクトモードでTypeScriptを使用
  • デプロイターゲット用に適切なアダプターを設定
  • コンポーネントデータ渡しにAstro.propsを使用
  • タイプセーフ環境変数にastro:envスキーマを使用
  • サーバーサイド状態管理にAstro.sessionを使用

やってはいけないこと

  • インタラクティビティを必要としないコンポーネントをハイドレート(必要な場合のみclient:を使用)
  • フレームワークを指定せずにclient:onlyを使用
  • 文字列パスで画像をインポート(インポートステートメントを使用)
  • コンテンツコレクションでスキーマ検証をスキップ
  • 出力モードserverhybridを誤って混在
  • プリレンダリングページでAstro.requestにアクセス
  • コンポーネントフロントマター(サーバーサイドコード)でブラウザAPIを使用
  • SSRデプロイ用にアダプターのインストールを忘れる
  • server:deferコンポーネントにプロパティとして関数を渡す(シリアライズ不可)
  • プリレンダリングページでAstro.sessionにアクセス(オンデマンドレンダリングが必要)
  • 新規プロジェクトでsrc/content/config.tsを使用(ローダー付きでsrc/content.config.tsを使用)

クイックリファレンス

コンポーネント構造

---
// コンポーネントスクリプト(サーバーで実行)
interface Props {
  title: string;
  count?: number;
}
const { title, count = 0 } = Astro.props;
const data = await fetch('https://api.example.com/data');
---

<!-- コンポーネントテンプレート -->
<div>
  <h1>{title}</h1>
  <p>Count: {count}</p>
</div>

<style>
  /* デフォルトでスコープ付き */
  h1 { color: navy; }
</style>

ディレクティブの優先順位

  1. ディレクティブなし → スタティックHTML、ゼロJavaScript
  2. server:defer → 遅延サーバーレンダリング(サーバーアイランド)
  3. client:load → ページロード時に即座にハイドレート
  4. client:idle → ブラウザがアイドル時にハイドレート
  5. client:visible → コンポーネントがビューポートに入るとハイドレート
  6. client:media → メディアクエリがマッチするとハイドレート
  7. client:only → SSRをスキップ、クライアント上でのみレンダリング

コンテンツコレクションスキーマ(Astro 5+)

// src/content.config.ts
import { defineCollection } from 'astro:content';
import { glob } from 'astro/loaders';
import { z } from 'astro/zod';

const blog = defineCollection({
  loader: glob({ base: './src/content/blog', pattern: '**/*.{md,mdx}' }),
  schema: z.object({
    title: z.string(),
    date: z.coerce.date(),
    draft: z.boolean().default(false),
    tags: z.array(z.string()).optional(),
  }),
});

export const collections = { blog };

サーバーアイランド

---
import UserAvatar from '../components/UserAvatar.astro';
---

<UserAvatar server:defer>
  <img slot="fallback" src="/generic-avatar.svg" alt="Loading..." />
</UserAvatar>

出力形式

Astro機能を実装する場合、以下を提供します:

  1. コンポーネントファイル(フロントマターとテンプレート付き.astro)
  2. 設定の更新(必要な場合はastro.config.mjs)
  3. コンテンツコレクションスキーマ(コレクションを使用する場合)
  4. TypeScriptタイプ(PropsとデータOKの)
  5. 選択したハイドレーション戦略の簡潔な説明

テクノロジー

Astro 5+/6+、アイランドアーキテクチャ、Content Layer API(glob/ファイルローダー、ライブローダー)、Zodスキーマ、ビュー遷移API、サーバーアイランド(server:defer)、セッション、アクション、ミドルウェア、astro:env(タイプセーフ環境変数)、i18nルーティング、アダプター(Node、Vercel、Netlify、Cloudflare、Deno)、React/Vue/Svelte/Solid統合、画像最適化、MDX、Markdoc、TypeScript、スコープ付きCSS、Tailwind CSS

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
delineas
リポジトリ
delineas/astro-framework-agents
ライセンス
MIT
最終更新
不明

Source: https://github.com/delineas/astro-framework-agents / ライセンス: MIT

関連スキル

汎用ソフトウェア開発⭐ リポ 39,967

doubt-driven-development

重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 1,175

apprun-skills

TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。

by yysun
OpenAIソフトウェア開発⭐ リポ 797

desloppify

コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。

by Git-on-my-level
汎用ソフトウェア開発⭐ リポ 39,967

debugging-and-error-recovery

テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

test-driven-development

テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

incremental-implementation

変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。

by addyosmani
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: delineas · delineas/astro-framework-agents · ライセンス: MIT