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本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
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
$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. 下の青いボタンを押して
adynato-web.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
adynato-webフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
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) の問題がない
スタイリング
推奨スタック
- Tailwind CSS - ユーティリティファーストのスタイリング
- CSS Modules - コンポーネントスコープのスタイルが必要な場合
- 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.tsor[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
priorityorfetchpriority="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
- Tailwind CSS - utility-first styling
- CSS Modules - when component-scoped styles needed
- 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">