adynato-web

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.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "adynato-web" with this command: npx skills add adynato/skills/adynato-skills-adynato-web

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 CaseMax WidthFormatsQuality
Hero/Banner1920pxWebP, AVIF, fallback JPG80-85
Content Images1200pxWebP, AVIF80
Thumbnails400pxWebP75
Icons/LogosOriginalSVG preferred, else PNGLossless
OG Images1200x630PNG or JPG90

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">

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

adynato-github

No summary provided by upstream source.

Repository SourceNeeds Review
General

adynato-mobile

No summary provided by upstream source.

Repository SourceNeeds Review
General

adynato-seo

No summary provided by upstream source.

Repository SourceNeeds Review
General

adynato-vercel

No summary provided by upstream source.

Repository SourceNeeds Review