skill-webdesign について
skill-webdesignは、AstroとTailwindを使う開発者向けのWebデザインスキルです。デザインシステムに加え、アクセシビリティ、SEO、パフォーマンス、実装パターンを扱います。
主な機能
- 01デザイントークンとスタイルガイドの活用
- 02モバイルファーストのレスポンシブレイアウト
- 03アクセシビリティの確認
- 04Astroのコンポーネントとコンテンツパターン
- 05SEOとパフォーマンスの指針
活用シーン
- 01レスポンシブなランディングページの構築
- 02既存デザインシステムの適用
- 03アクセシビリティとモバイル表示の確認
- 04Astroのコンテンツとコンポーネントの構成
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ raro123/ fund-investigator --skill skill-webdesignインストール後、Claude Code で/skill-webdesignを入力して読み込まれたか確認します。
同梱ファイルreferences/astro-patterns.mdreferences/styleguide.md
詳細
Web Designer Skill
デザインの細部にこだわりながら、レスポンシブで保守しやすいウェブサイトを作成するための専門的なガイダンスです。
基本原則
デザインの一貫性
- まずプロジェクトのスタイルガイドを読み込みます。
references/styleguide.mdまたはプロジェクトのデザイントークンを確認してください - 生の値(
#1E3A5F)ではなく、意味のある色名(--color-navy)を使用します - タイポグラフィの階層を維持します。ページごとにディスプレイサイズは1つにし、見出しの段階を一貫させます
- 余白には任意の値ではなく、デザイントークン(
section-gap、card-padding)を使用します
モバイルファーストのレスポンシブデザイン
- モバイル向けレイアウトから始め、大きな画面向けに段階的に拡張します
- ブレークポイント:
sm:640px、md:768px、lg:1024px、xl:1280px - タッチターゲット:インタラクティブ要素は最小44x44pxにします
- テスト:幅320pxで横スクロールせずにコンテンツを読めることを確認します
アクセシビリティの必須要件
- 色のコントラスト比:本文テキストは4.5:1、大きなテキストは3:1
- フォーカス状態:すべてのインタラクティブ要素で視認できるようにします
- セマンティックHTML:適切な見出し階層、ランドマーク、フォームラベルを使用します
- 画像:意味のある代替テキストを設定するか、装飾用の場合は
aria-hiddenを設定します
技術スタック:Astro + Tailwind + Cloudflare
プロジェクト構成
src/
├── components/
│ └── ui/ # Reusable UI components
├── layouts/ # Page layouts (BaseLayout.astro)
├── pages/ # Routes - each .astro = a page
├── content/ # Markdown/MDX for content collections
├── styles/ # Global CSS, Tailwind config
└── assets/ # Images, fonts (processed by Astro)
public/ # Static assets (copied as-is)
コンポーネントのパターン
Astroコンポーネント - 静的またはインタラクションが少ないUIに使用します:
---
interface Props {
variant?: 'primary' | 'secondary';
size?: 'sm' | 'md' | 'lg';
}
const { variant = 'primary', size = 'md' } = Astro.props;
---
<button class:list={['btn', `btn-${variant}`, `btn-${size}`]}>
<slot />
</button>
コンテンツコレクション - ブログ記事、レポート、事例紹介に使用します:
// src/content/config.ts
import { defineCollection, z } from 'astro:content';
const posts = defineCollection({
type: 'content',
schema: z.object({
title: z.string(),
date: z.date(),
featured: z.boolean().default(false),
tags: z.array(z.string()).optional(),
}),
});
export const collections = { posts };
自動化パターン
ハードコードしない - データ駆動型のアプローチを使用します:
---
// ❌ Hardcoded featured posts
const featured = [{ title: "Post 1" }, { title: "Post 2" }];
// ✅ Query from content collection
import { getCollection } from 'astro:content';
const featured = await getCollection('posts', ({ data }) => data.featured);
---
動的な日付:
---
// ❌ Hardcoded year
const year = "2024";
// ✅ Dynamic
const year = new Date().getFullYear();
---
<footer>© {year} Company Name</footer>
環境ベースの設定:
// astro.config.mjs
export default defineConfig({
site: import.meta.env.PROD
? 'https://example.com'
: 'http://localhost:4321',
});
ランディングページの構成
必須セクション
- ヒーロー - 明確な価値提案と、主要なCTAを1つ
- ソーシャルプルーフ - ロゴ、推薦の声、指標
- 機能/メリット - アイコン付きの主なポイントを3~4つ
- 仕組み - シンプルな3ステップのプロセス
- CTAセクション - フッターの前にアクションを促します
- フッター - ナビゲーション、法的リンク、著作権表示
SEOチェックリスト
- 固有の
<title>(50~60文字)と<meta name="description">(150~160文字) - ソーシャル共有用のOpen Graphタグ
- canonical URLの設定
- 組織/製品向けの構造化データ(JSON-LD)
- Sitemap.xmlの生成
- robots.txtの設定
パフォーマンス目標
- Lighthouse Performance:>90
- First Contentful Paint:<1.5s
- Cumulative Layout Shift:<0.1
- ファーストビュー以降の画像には
loading="lazy"を使用します - WebPとフォールバックを指定した
<picture>を優先します
ワークフロー
- 開始前:プロジェクトにデザインシステムがある場合は、
references/styleguide.mdを読み込みます - コンポーネントの作成:新しいコンポーネントを作成する前に、既存のUIコンポーネントを確認します
- スタイリング:既存のデザイントークンを使用します。必要に応じて、スタイルガイドへの追加を提案します
- コンテンツ:繰り返し使用するコンテンツタイプには、コンテンツコレクションを使用します
- テスト:モバイルレイアウト、アクセシビリティ、パフォーマンスを確認します
参考資料
references/styleguide.md- Fund Investigatorのデザインシステム(色、タイポグラフィ、コンポーネント)references/astro-patterns.md- Astroでよく使われるパターンと注意点
コメント
Markdown 対応