netlify-access-control
Picks the right Netlify site-protection layer and disambiguates the three unrelated "auth" concepts users conflate — app-user…
Transforms images on demand via Netlify Image CDN's /.netlify/images endpoint with query parameters for resizing/cropping/format/quality. Use when adding image optimization or responsive images, converting formats (WebP/AVIF/PNG), generating thumbnails or blur placeholders,
Claude Code
$ npx -y skills add netlify/context-and-tools --skill netlify-image-cdn --agent claude-code
Codex
$ npx skills add netlify/context-and-tools --skill netlify-image-cdn -a codex -y
Cursor
$ npx skills add netlify/context-and-tools --skill netlify-image-cdn -a cursor -y
Gemini CLI
$ npx skills add netlify/context-and-tools --skill netlify-image-cdn -a gemini-cli -y
GitHub Copilot
$ npx skills add netlify/context-and-tools --skill netlify-image-cdn -a github-copilot -y
OpenCode
$ npx skills add netlify/context-and-tools --skill netlify-image-cdn -a opencode -y
Windsurf
$ npx skills add netlify/context-and-tools --skill netlify-image-cdn -a windsurf -y
name: netlify-image-cdn description: Transforms images on demand via Netlify Image CDN's /.netlify/images endpoint with query parameters for resizing/cropping/format/quality. Use when adding image optimization or responsive images, converting formats (WebP/AVIF/PNG), generating thumbnails or blur placeholders, serving remote/third-party images through the CDN, allowlisting remote domains in netlify.toml, setting up image redirects or cache headers, building user-uploaded image pipelines, or debugging a 404 on /.netlify/images. Also covers framework image handling for Angular/Astro/Gatsby/Next.js/Nuxt.
Transform images by requesting the endpoint with a `url` query parameter. This is the current and only documented surface — there is no legacy form.
GET /.netlify/images?url=<source>[&w=][&h=][&fit=][&position=][&fm=][&q=]
# resize a deployed image to 50px wide curl -vs 'https://mysitename.netlify.app/.netlify/images?url=/owl.jpeg&w=50'
`url` is required; all other parameters are optional.
| Parameter | Purpose | Values | Default | |-----------|---------|--------|---------| | `url` | Source asset (required) | Relative path or remote URL | — | | `w` | Width in pixels | Integer | — | | `h` | Height in pixels | Integer | — | | `fit` | Resize behavior | `contain`, `cover`, `fill` | `contain` | | `position` | Crop anchor when `fit=cover` | `top`, `bottom`, `left`, `right`, `center` | `center` | | `fm` | Output format | `avif`, `jpg`, `png`, `webp`, `gif`, `blurhash` | content-negotiated | | `q` | Quality for lossy output | Integer `1`–`100` | `75` |
# resize + crop to a 50px square, retaining the left side curl -vs 'https://mysitename.netlify.app/.netlify/images?url=/owl.jpeg&fit=cover&w=50&h=50&position=left' # convert JPEG to PNG (response carries content-type: image/png) curl -vs 'https://mysitename.netlify.app/.netlify/images?url=/owl.jpeg&fm=png' # convert JPEG to AVIF at medium quality curl -vs 'https://mysitename.netlify.app/.netlify/images?url=/owl.jpeg&fm=avif&q=50'
Remote sources must be allowlisted in `netlify.toml` before transformation, or the request fails.
[images] remote_images = ['https://my-images\.com/.*', 'https://animals.more-images.com/[bcr]at/.*']
Percent-encode remote source URLs before placing them in the `url` parameter with `encodeURIComponent` — a URL containing `?` or `&` breaks otherwise.
const src = `/.netlify/images?url=${encodeURIComponent('https://my-images.com/owl.jpeg?v=2')}&w=400`;Constraints:
The only meaningful escape is the literal dot (`\.`). Forward slashes are NOT metacharacters — never write `https:\/\/`. In `netlify.toml`, use single-quoted literal strings (`'https://example\.com/.*'`) or double the backslash in double-quoted strings (`"https://example\\.com/.*"`). A bare `\.` inside double quotes is invalid TOML.
Map a friendly path to the endpoint with a redirect/rewrite.
`_redirects`:
/transform-small/* /.netlify/images?url=/:splat&w=50&h=50 200
`netlify.toml`:
[[redirects]] from = "/transform-small/*" to = "/.netlify/images?url=/:splat&w=50&h=50" status = 200
Then `GET /transform-small/owl.jpeg` returns the transformed image. **Cross-site redirects for transformations are NOT recommended** — they can degrade site performance.
Apply custom headers to source images on the site's own domain; they carry through to the transformed output.
`netlify.toml`:
[[headers]]
for = "/source-images/*"
[headers.values]
Cache-Control = "public, max-age=604800, must-revalidate"`fm=blurhash` returns a BlurHash **text string**, not image bytes. Pointing an `<img src>` (or CSS background) at it renders nothing. Fetch the string ahead of time, decode it client-side with a BlurHash library (https://blurha.sh), and load the real image as a separate request without `fm=blurhash`.
The `/.netlify/images` endpoint, `[images]` allowlisting, and image redirects only exist under `netlify dev` (Netlify CLI). A local **404 on `/.netlify/images` almost always means a framework dev server (`vite`, `next dev`, `astro dev`) is running instead of `netlify dev`** —
Public Netlify skills for AI coding agents. Each skill is a focused, factual reference for a Netlify platform primitive — designed to help agents build correctly on Netlify without needing to search docs.
Picks the right Netlify site-protection layer and disambiguates the three unrelated "auth" concepts users conflate — app-user…
Run AI agent tasks remotely on Netlify using Claude, Codex, or Gemini. Use when the user wants to run an AI agent on their site,…
Use Netlify AI Gateway to call OpenAI, Anthropic Claude, Google Gemini, TypeSafe (Jev), or OpenRouter-hosted models…
Store and retrieve unstructured objects, files, and cache-like state on Netlify with the @netlify/blobs module. Use when…
Cache dynamic and static responses on Netlify's CDN from Functions, Edge Functions, and proxies. Use when you add caching or…
Configure Netlify builds and routing via netlify.toml, _redirects, and _headers. Use when setting a build command or publish…
Use this skill whenever the user mentions Horizon by name in a Laravel context. Covers the full Horizon lifecycle: installing…
Use when launching cloud VMs, Kubernetes pods, or Slurm jobs for GPU/TPU/CPU workloads, training or fine-tuning models on cloud…
Use this skill when the user mentions "pinme", or needs to upload files, store to IPFS, create/publish/deploy websites or…