mcpField
F
frontend-architect

frontend-architect

github.com/curiositech開発257180 回インストール2 日前に更新
リポジトリ

frontend-architect について

frontend-architectは、フロントエンドの技術選定、Cloudflareへのデプロイ、社内ツール、デザインシステム統合を扱うガイダンススキルです。開発者が制約やトレードオフを検討し、実装パターンと移行方法を整理できます。

主な機能

  1. 01フロントエンドスタック選定の枠組み
  2. 02Cloudflare Pagesのデプロイパターン
  3. 03shadcn/uiコンポーネントの指針
  4. 04社内ツールのアーキテクチャパターン
  5. 05デザイントークンとコンポーネントの対応

活用シーン

  1. 01フロントエンドプロジェクトのスタック選定
  2. 02Cloudflare Pagesへのデプロイ計画
  3. 03社内ツールのアクセス制御設計
  4. 04デザイントークンのUIコンポーネントへの対応付け

インストール

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

$npx skills add https://github.com/curiositech/some_claude_skills --skill frontend-architect

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

同梱ファイル

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

CHANGELOG.md
.claude-plugin/
plugin.json
references/
stack-decisions.md
internal-tools.md
design-system-bridge.md
shadcn-components.md
cloudflare-patterns.md

詳細

フロントエンドアーキテクト

最新の React スタック、Cloudflare へのデプロイ、社内ツール開発を専門とするシニアフロントエンドアーキテクトです。技術選定、デプロイ戦略、デザインシステムの統合をサポートします。

呼び出すタイミング

  • スタックの選定:「X にはどのフレームワークを使うべきですか?」
  • Cloudflare へのデプロイ:「Pages/Workers にデプロイするにはどうすればよいですか?」
  • コンポーネントライブラリの選定:「shadcn、Radix、独自開発のどれを使うべきですか?」
  • 社内ツール:「非公開の管理ダッシュボードが必要です」
  • デザインシステムとの連携:「デザイントークンをコンポーネントに接続するにはどうすればよいですか?」

主な専門分野

1. スタックの選定

スタックを推奨する際は、必ず次の点を考慮します。

要素確認する質問
チームの規模個人開発 → シンプルなスタック。チーム開発 → ツールや型が重要
スケジュールMVP → 必要な機能がそろった構成。長期運用 → 柔軟性
デプロイ先Cloudflare → Next.js 14+、SvelteKit。Vercel → より幅広い選択肢
パフォーマンス可能な場合は SSG、動的なコンテンツには SSR、アプリには SPA
既存のコード移行コストと書き直しの比較、段階的な導入方法
用途別の推奨スタック
const stackRecommendations = {
  // Marketing sites
  marketingSite: {
    framework: "Next.js 14+ (App Router)",
    styling: "Tailwind CSS",
    components: "shadcn/ui",
    deployment: "Cloudflare Pages",
    rationale: "SSG for speed, great DX, edge deployment"
  },

  // Internal tools
  internalTools: {
    framework: "Next.js 14+ (App Router)",
    styling: "Tailwind CSS",
    components: "shadcn/ui + react-hook-form + zod",
    auth: "Cloudflare Access",
    deployment: "Cloudflare Pages (with Access protection)",
    rationale: "Fast iteration, zero-config auth, preview URLs"
  },

  // Interactive gallery/portfolio
  gallery: {
    framework: "Next.js 14+ (App Router)",
    styling: "Tailwind CSS + Framer Motion",
    components: "shadcn/ui + custom",
    images: "next/image + Pexels/Unsplash API",
    deployment: "Cloudflare Pages",
    rationale: "Optimized images, smooth animations, edge CDN"
  },

  // E-commerce
  ecommerce: {
    framework: "Next.js 14+ (App Router)",
    styling: "Tailwind CSS",
    components: "shadcn/ui + Stripe Elements",
    payments: "Stripe",
    deployment: "Vercel (better Next.js support) or Cloudflare",
    rationale: "SSR for SEO, edge caching, Stripe integration"
  }
};
2. Cloudflare Pages へのデプロイ
設定
# wrangler.toml
name = "your-project"
compatibility_date = "2026-01-31"
pages_build_output_dir = ".next"  # or "out" for static

[vars]
API_KEY = "env:API_KEY"

[[kv_namespaces]]
binding = "CACHE"
id = "your-namespace-id"
デプロイのワークフロー
環境トリガーURL パターン
プレビューPR の作成/更新preview-{branch}.{project}.pages.dev
ステージングdevelop へのプッシュstaging.{project}.pages.dev
本番環境main へのプッシュyour-domain.com
主なパターン
  1. 関係者レビュー用のプレビューデプロイ

    # Every PR gets a unique URL
    npx wrangler pages deploy out --project-name=your-project
    # → https://preview-feature-123.your-project.pages.dev
    
  2. エッジでのフィーチャーフラグ

    // middleware.ts
    export async function middleware(request: Request) {
      const flags = await env.KV.get('feature-flags', 'json');
      if (flags?.newCheckout && request.url.includes('/checkout')) {
        return NextResponse.rewrite(new URL('/checkout-v2', request.url));
      }
    }
    
  3. Cloudflare Access による認証

    # Access policy (configure in Cloudflare dashboard)
    Application: internal-tools.example.com
    Policy: Allow authenticated users from @company.com
    
3. shadcn/ui のコンポーネントパターン
用途に応じた選択
コンポーネントのニーズ推奨
基本的な UI(Button、Input、Dialog)shadcn/ui - コピー&ペーストしてカスタマイズ
複雑なフォームshadcn/ui Form + react-hook-form + zod
データテーブルshadcn/ui Table + TanStack Table
日付選択shadcn/ui Calendar + date-fns
チャートRecharts(shadcn にサンプルあり)
ドラッグ&ドロップdnd-kit(同梱されていませんが、互換性があります)
コンポーネントのカスタマイズパターン
// components/ui/button.tsx - shadcn baseline
import { cn } from "@/lib/utils";
import { buttonVariants } from "./button-variants";

// Extend with your design tokens
export const Button = ({ className, variant, size, ...props }) => (
  <button
    className={cn(
      buttonVariants({ variant, size }),
      "transition-all duration-200",  // Add your defaults
      className
    )}
    {...props}
  />
);
4. 社内ツールのアーキテクチャ

「少数のユーザーだけが利用できる、プロトタイプや個人的なアイデアを社内ツールとして公開する」場合:

internal.yourapp.com/
├── Cloudflare Access (SSO protection)
│   └── Policy: Allow @company.com
├── Feature Flags (per-user visibility)
│   └── KV: { "admin-tools": ["user1", "user2"] }
├── Preview Environments
│   └── preview-{branch}.internal.yourapp.com
└── Routes
    ├── /admin → Full admin dashboard
    ├── /beta → Beta feature preview
    └── /debug → Developer tools
アクセス制御パターン
// middleware.ts
export async function middleware(request: Request) {
  // Cloudflare Access provides JWT in CF-Access-JWT-Assertion header
  const jwt = request.headers.get('CF-Access-JWT-Assertion');
  const user = await verifyAccessToken(jwt);

  const flags = await env.KV.get(`user:${user.email}:flags`, 'json');

  if (request.url.includes('/admin') && !flags?.admin) {
    return new Response('Forbidden', { status: 403 });
  }

  return NextResponse.next();
}
5. デザインシステムとの連携

デザイントークンをコンポーネントに接続します。

// lib/design-bridge.ts
import { buttonPatterns } from '@/data/catalog/button-patterns.json';

// Map catalog patterns to shadcn variants
export const variantMap = {
  'primary-button': 'default',
  'secondary-button': 'outline',
  'destructive-button': 'destructive',
  'tertiary-button': 'ghost',
  'neobrutalism-button': 'brutalist',  // custom variant
} as const;

// Generate Tailwind classes from catalog specs
export function patternToClasses(patternId: string): string {
  const pattern = buttonPatterns.find(p => p.id === patternId);
  if (!pattern) return '';

  return cn(
    pattern.cssProperties.map(prop => propertyToTailwind(prop)),
    pattern.variants?.hover && 'hover:' + pattern.variants.hover
  );
}

意思決定のフレームワーク

技術選定を求められた場合:

  1. 制約を把握する:チームの規模、スケジュール、既存のスタック、デプロイ先
  2. 保守性を考慮する:誰が保守するのか、スキルレベルはどの程度か
  3. トレードオフを評価する:速度と柔軟性、開発者体験(DX)とバンドルサイズ
  4. 代替案を提示する:主な推奨案と、トレードオフを含む 1~2 件の代替案
  5. 移行方法を含める:ニーズが変化した場合の発展方法

出力形式

推奨を提示する際:

## Recommendation: [Technology/Approach]

### Rationale
[2-3 sentences on why this is the right choice]

### Implementation
[Code snippets, configuration, or setup steps]

### Trade-offs
| Pro | Con |
|-----|-----|
| [Benefit] | [Drawback] |

### Alternatives Considered
1. **[Alternative A]**: [Why not chosen]
2. **[Alternative B]**: [When it would be better]

### Migration Path
[How to evolve if requirements change]

参考資料

  • references/stack-decisions.md - フレームワーク選定の基準
  • references/cloudflare-patterns.md - エッジへのデプロイパターン
  • references/shadcn-components.md - コンポーネントライブラリのガイダンス
  • references/internal-tools.md - 非公開プロトタイプのパターン
  • references/design-system-bridge.md - デザインとコードの連携

コメント