mcpField
A
astro

astro

github.com/oakoss開発21105 回インストール12 週間前に更新
リポジトリ

astro について

Astro は、コンテンツ中心の高速なサイトを構築するための Web フレームワークを扱うスキルです。コンテンツコレクション、レンダリング方式、アイランド構成、各種 UI フレームワークとの連携を開発者に案内します。

主な機能

  1. 01コンテンツコレクションと型付きクエリ
  2. 02アイランド構成とハイドレーション方式
  3. 03静的・サーバー・ハイブリッドレンダリング
  4. 04React、Svelte、Vue、Solid、Preact との連携
  5. 05ミドルウェア、ルート、画面遷移

活用シーン

  1. 01ブログ、ドキュメント、マーケティングサイトの構築
  2. 02静的ページへのインタラクティブなコンポーネント追加
  3. 03静的・サーバー・ハイブリッド方式の選択

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/oakoss/agent-skills --skill astro

インストール後、Claude Code で/astroを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
astro-db.md
content-collections.md
framework-integration.md
island-architecture.md
middleware.md
rendering-modes.md
view-transitions.md

詳細

Astro

概要

Astro は、高速でコンテンツ重視のウェブサイトを構築するためのオールインワンのウェブフレームワークです。アイランドアーキテクチャを採用しており、デフォルトでは JavaScript を一切配信せず、インタラクティブなコンポーネントのみを必要に応じてハイドレーションします。React、Svelte、Vue、Solid、Preact のコンポーネントを1つのプロジェクト内で共存させることができます。

使用する場合: コンテンツ主導のサイト(ブログ、ドキュメント、マーケティングサイト)、ポートフォリオ、ECストアフロントなど、大部分のページが主に静的で、一部に独立したインタラクティブ領域があるサイト。

使用しない場合: 高度にインタラクティブなシングルページアプリケーション(ダッシュボード、リアルタイムコラボレーションツール)や、すべてのコンポーネントで共有されるグローバル状態を伴う、完全なクライアントサイドルーティングが必要なアプリ。

クイックリファレンス

パターンAPI/ディレクティブ主なポイント
コンテンツコレクションdefineCollection({ loader, schema })Zod スキーマ、glob/ファイルローダー、型安全なクエリ
コレクションのクエリgetCollection('blog')型付き配列を返し、フィルターコールバックに対応
単一エントリーgetEntry('blog', 'my-post')コレクション名とエントリー ID を指定して取得
アイランド(読み込み)<Component client:load />ページ読み込み時にすぐハイドレーション
アイランド(アイドル)<Component client:idle />ブラウザーがアイドル状態のときにハイドレーション
アイランド(表示時)<Component client:visible />コンポーネントがビューポートに入るとハイドレーション
アイランド(クライアントのみ)<Component client:only="react" />SSR をスキップし、クライアントのみでレンダリング
ビュートランジション<ClientRouter /><head> に追加すると、SPA のようなナビゲーションが可能
状態の維持transition:persistナビゲーションをまたいでアイランドの状態を維持
プログラムからのナビゲーションnavigate(href)スクリプトからクライアント側でナビゲーション
静的出力output: 'static'ビルド時にすべてのページを事前レンダリング(デフォルト)
サーバー出力output: 'server'すべてのページをリクエストに応じてサーバーレンダリング
ハイブリッド(SSR をオプトイン)output: 'static' + per-page prerender = falseデフォルトは静的、個別のページで SSR をオプトイン
ハイブリッド(静的出力をオプトイン)output: 'server' + per-page prerender = trueデフォルトは SSR、個別のページで静的出力をオプトイン
サーバーアイランド<Component server:defer />静的コンテンツ内の動的コンテンツのサーバーレンダリングを遅延
ミドルウェアonRequest(context, next)すべてのルートの前に実行され、sequence() でチェーン可能
Astro DB テーブルdefineTable({ columns })カラム定義による型安全な SQL
フレームワークコンポーネント.jsx/.svelte/.vue をインポートファイル拡張子から自動検出
インテグレーションastro add reactフレームワークアダプターとツールを追加する CLI
コンテンツのレンダリングconst { Content } = await entry.render()Markdown/MDX をコンポーネントにコンパイル
動的ルートgetStaticPaths() + コレクションクエリコレクションのエントリーからページを生成
API エンドポイントexport const GET: APIRouteサーバーレンダリングされる REST エンドポイント
アイランド間で共有する状態nanostoresフレームワークの境界を越えてリアクティブな状態を共有
環境変数import.meta.env.PUBLIC_*クライアントからアクセス可能な変数には PUBLIC_ 接頭辞を使用
トランジションアニメーションtransition:animate="slide"initial、fade、slide、none
リンクのプリフェッチdata-astro-prefetchhover、viewport、load、または false
コレクション参照reference('authors')型安全なコレクション間リレーション
スクリプトの再実行data-astro-rerunビュートランジションによるナビゲーションのたびに <script> を再実行
リダイレクトcontext.redirect(url, status)ミドルウェアまたはサーバーページからリダイレクト

よくある間違い

間違い正しいパターン
.astro コンポーネントに client: ディレクティブを追加するclient: を受け付けるのは UI フレームワークのコンポーネント(React、Svelte、Vue)のみです
どこでも client:load を使うデフォルトでは client:idle または client:visible を使い、client:load は必要な場合に限って使います
client:only でフレームワーク文字列を忘れるフレームワークの指定が必要です:client:only="react"
Astro 以外のファイルでフレームワークのコンポーネントを混在させる複数のフレームワークのコンポーネントを組み合わせられるのは .astro ファイルのみです
ほとんどが静的なサイトで output: 'server' を使うハイブリッド構成では、ページごとに prerender = false を設定して output: 'static' を使います
ビュー遷移で <ClientRouter /> を省略するすべてのページの <head> 内に必要です(共有レイアウトを使います)
コンテンツ設定が src/content.config.ts にないファイル名を content.config.ts とし、src/ のルートに配置する必要があります
getCollection() の呼び出しを await しないフロントマター内のコレクションクエリには必ず await を付けます
クライアントスクリプトで astro:content からインポートするコンテンツ API はサーバー専用です。データはクライアントコンポーネントに props として渡します
ミドルウェアを src/middleware.ts の外に配置するミドルウェアは src/middleware.ts または src/middleware/index.ts に配置する必要があります
アイランドに関数を props として渡すサーバー/クライアント間で受け渡せるのはシリアライズ可能なデータのみです
対応するページがない状態で transition:persist を使うコンポーネントは同じ persist 値で、新旧両方のページに表示される必要があります
サーバー/ハイブリッドモードでアダプターが不足しているアダプターをインストールします:npx astro add vercel(または node、netlify など)

委任

  • パターンの調査:Explore エージェントを使います
  • ビルド設定:Task エージェントを使います
  • コードレビュー:code-reviewer エージェントに委任します

tailwind スキルが利用可能な場合は、スタイリングと Tailwind CSS の設定をそのスキルに委任します。 vitest スキルが利用可能な場合は、ユニットテストのパターンをそのスキルに委任します。 playwright スキルが利用可能な場合は、エンドツーエンドテストのパターンをそのスキルに委任します。 vite スキルが利用可能な場合は、ビルド設定と Vite プラグインのセットアップをそのスキルに委任します。 drizzle スキルが利用可能な場合は、高度なデータベースクエリのパターンをそのスキルに委任します。 sentry スキルが利用可能な場合は、エラー監視とオブザーバビリティの設定をそのスキルに委任します。 pino-logging スキルが利用可能な場合は、サーバーサイドのロギング設定をそのスキルに委任します。 tanstack-query スキルが利用可能な場合は、クライアントサイドのデータ取得とキャッシュをそのスキルに委任します。

参考資料

コメント