jpskill.com
🛠️ 開発・MCP コミュニティ

adynato-web

AdynatoプロジェクトにおけるWeb開発のルールをまとめたもので、画像最適化や素材管理、UI部品の作り方、デザイン、高速化など、Webアプリ開発や修正、画像追加、UI部品作成時に役立つSkill。

📜 元の英語説明(参考)

Web development conventions for Adynato projects. Covers image optimization with img4web, asset management, component patterns, styling, and performance best practices. Use when building or modifying web applications, adding images/assets, or creating UI components.

🇯🇵 日本人クリエイター向け解説

一言でいうと

AdynatoプロジェクトにおけるWeb開発のルールをまとめたもので、画像最適化や素材管理、UI部品の作り方、デザイン、高速化など、Webアプリ開発や修正、画像追加、UI部品作成時に役立つSkill。

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o adynato-web.zip https://jpskill.com/download/9759.zip && unzip -o adynato-web.zip && rm adynato-web.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/9759.zip -OutFile "$d\adynato-web.zip"; Expand-Archive "$d\adynato-web.zip" -DestinationPath $d -Force; ri "$d\adynato-web.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して adynato-web.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → adynato-web フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-18
取得日時
2026-05-18
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

Web開発スキル

このスキルは、すべてのAdynatoのWebプロジェクトおよびフロントエンド開発に使用します。

画像とアセットの管理

常に img4web を使用する

Adynatoのプロジェクトに画像やビジュアルアセットを追加する際は、必ず adynato/img4web を使用してください。

# グローバルにインストール
npm install -g @adynato/img4web

# または npx を使用
npx @adynato/img4web <input> [options]

img4web を使用する場面

  • プロジェクトに新しい画像を追加する場合
  • ユーザーがアップロードした画像を処理する場合
  • 既存の最適化されていない画像を最適化する場合
  • 画像を最新のフォーマット(WebP、AVIF)に変換する場合
  • レスポンシブな画像セットを生成する場合

img4web の使用方法

# 基本的な最適化
npx @adynato/img4web ./src/images

# 特定の出力形式を指定
npx @adynato/img4web ./image.png --formats webp,avif

# レスポンシブなサイズを生成
npx @adynato/img4web ./hero.jpg --sizes 640,1024,1920

# 開発中の監視モード
npx @adynato/img4web ./src/images --watch

画像の要件

ユースケース 最大幅 フォーマット 品質
Hero/Banner 1920px WebP, AVIF, フォールバック JPG 80-85
コンテンツ画像 1200px WebP, AVIF 80
サムネイル 400px WebP 75
アイコン/ロゴ オリジナル SVG 推奨、それ以外は PNG ロスレス
OG 画像 1200x630 PNG または JPG 90

画像コンポーネントのパターン

常に最新のフォーマットのフォールバックを使用したレスポンシブ画像を使用してください。

// Next.js
import Image from 'next/image'

<Image
  src="/images/hero.webp"
  alt="説明的な代替テキスト"
  width={1920}
  height={1080}
  priority // above-fold 画像の場合
  placeholder="blur"
  blurDataURL={blurDataUrl}
/>
<!-- picture 要素を使用したプレーンな HTML -->
<picture>
  <source srcset="/images/hero.avif" type="image/avif">
  <source srcset="/images/hero.webp" type="image/webp">
  <img src="/images/hero.jpg" alt="説明的な代替テキスト" loading="lazy">
</picture>

アセットの整理

public/
├── images/
│   ├── blog/
│   │   └── [post-slug]/
│   │       ├── cover.webp
│   │       ├── cover.avif
│   │       └── *.webp
│   ├── og/
│   │   └── [page-slug].png
│   ├── icons/
│   │   └── *.svg
│   └── hero/
│       └── *.webp
├── fonts/
│   └── *.woff2
└── videos/
    └── *.mp4

コンポーネントのパターン

ファイルの命名

  • コンポーネント: PascalCase.tsx (例: Button.tsx, NavBar.tsx)
  • ユーティリティ: camelCase.ts (例: formatDate.ts)
  • フック: useCamelCase.ts (例: useAuth.ts)
  • 型: types.ts または [feature].types.ts

コンポーネントの構造

// components/Button.tsx
import { type ReactNode } from 'react'

interface ButtonProps {
  children: ReactNode
  variant?: 'primary' | 'secondary'
  onClick?: () => void
}

export function Button({ children, variant = 'primary', onClick }: ButtonProps) {
  return (
    <button
      className={`btn btn-${variant}`}
      onClick={onClick}
    >
      {children}
    </button>
  )
}

エクスポートのパターン

デフォルトエクスポートよりも名前付きエクスポートを優先します。

// 良い例
export function Button() { ... }
export function Input() { ... }

// 避けるべき例
export default function Button() { ... }

パフォーマンスチェックリスト

Webプロジェクトをデプロイする前に:

  • [ ] すべての画像が img4web で処理されている
  • [ ] 画像が WebP/AVIF を使用し、フォールバックがある
  • [ ] Above-fold 画像に priority または fetchpriority="high" がある
  • [ ] Below-fold 画像に loading="lazy" がある
  • [ ] フォントが WOFF2 として自己ホストされている
  • [ ] クリティカル CSS がインライン化されている
  • [ ] JavaScript が適切にコード分割されている
  • [ ] レイアウトシフト (CLS) の問題がない

スタイリング

推奨スタック

  1. Tailwind CSS - ユーティリティファーストのスタイリング
  2. CSS Modules - コンポーネントスコープのスタイルが必要な場合
  3. CSS Variables - テーマ設定と動的な値の場合

Tailwind の規約

// 一貫した順序を使用: layout, spacing, sizing, typography, colors, effects
<div className="flex items-center gap-4 p-4 w-full text-sm text-gray-700 bg-white rounded-lg shadow-md">

ダークモード

常にダークモードをサポートします。

<div className="bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100">
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

Web Development Skill

Use this skill for all Adynato web projects and frontend development.

Image & Asset Management

Always Use img4web

When adding images or visual assets to any Adynato project, use adynato/img4web.

# Install globally
npm install -g @adynato/img4web

# Or use npx
npx @adynato/img4web <input> [options]

When to Use img4web

  • Adding any new image to a project
  • Processing user-uploaded images
  • Optimizing existing unoptimized images
  • Converting images to modern formats (WebP, AVIF)
  • Generating responsive image sets

img4web Usage

# Basic optimization
npx @adynato/img4web ./src/images

# With specific output formats
npx @adynato/img4web ./image.png --formats webp,avif

# Generate responsive sizes
npx @adynato/img4web ./hero.jpg --sizes 640,1024,1920

# Watch mode during development
npx @adynato/img4web ./src/images --watch

Image Requirements

Use Case Max Width Formats Quality
Hero/Banner 1920px WebP, AVIF, fallback JPG 80-85
Content Images 1200px WebP, AVIF 80
Thumbnails 400px WebP 75
Icons/Logos Original SVG preferred, else PNG Lossless
OG Images 1200x630 PNG or JPG 90

Image Component Pattern

Always use responsive images with modern format fallbacks:

// Next.js
import Image from 'next/image'

<Image
  src="/images/hero.webp"
  alt="Descriptive alt text"
  width={1920}
  height={1080}
  priority // for above-fold images
  placeholder="blur"
  blurDataURL={blurDataUrl}
/>
<!-- Plain HTML with picture element -->
<picture>
  <source srcset="/images/hero.avif" type="image/avif">
  <source srcset="/images/hero.webp" type="image/webp">
  <img src="/images/hero.jpg" alt="Descriptive alt text" loading="lazy">
</picture>

Asset Organization

public/
├── images/
│   ├── blog/
│   │   └── [post-slug]/
│   │       ├── cover.webp
│   │       ├── cover.avif
│   │       └── *.webp
│   ├── og/
│   │   └── [page-slug].png
│   ├── icons/
│   │   └── *.svg
│   └── hero/
│       └── *.webp
├── fonts/
│   └── *.woff2
└── videos/
    └── *.mp4

Component Patterns

File Naming

  • Components: PascalCase.tsx (e.g., Button.tsx, NavBar.tsx)
  • Utilities: camelCase.ts (e.g., formatDate.ts)
  • Hooks: useCamelCase.ts (e.g., useAuth.ts)
  • Types: types.ts or [feature].types.ts

Component Structure

// components/Button.tsx
import { type ReactNode } from 'react'

interface ButtonProps {
  children: ReactNode
  variant?: 'primary' | 'secondary'
  onClick?: () => void
}

export function Button({ children, variant = 'primary', onClick }: ButtonProps) {
  return (
    <button
      className={`btn btn-${variant}`}
      onClick={onClick}
    >
      {children}
    </button>
  )
}

Export Pattern

Prefer named exports over default exports:

// Good
export function Button() { ... }
export function Input() { ... }

// Avoid
export default function Button() { ... }

Performance Checklist

Before deploying any web project:

  • [ ] All images processed through img4web
  • [ ] Images use WebP/AVIF with fallbacks
  • [ ] Above-fold images have priority or fetchpriority="high"
  • [ ] Below-fold images have loading="lazy"
  • [ ] Fonts are self-hosted as WOFF2
  • [ ] Critical CSS is inlined
  • [ ] JavaScript is code-split appropriately
  • [ ] No layout shift (CLS) issues

Styling

Preferred Stack

  1. Tailwind CSS - utility-first styling
  2. CSS Modules - when component-scoped styles needed
  3. CSS Variables - for theming and dynamic values

Tailwind Conventions

// Use consistent ordering: layout, spacing, sizing, typography, colors, effects
<div className="flex items-center gap-4 p-4 w-full text-sm text-gray-700 bg-white rounded-lg shadow-md">

Dark Mode

Always support dark mode:

<div className="bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100">