Skip to main content
skill CX Codex

cloudinary-next — Claude Code skill for Cloudinary in Next.js

Guides your agent through Next.js code that uses Cloudinary: images, video, uploads, OG cards. Handy when the server/client boundary or signed uploads get messy.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add cloudinary-devs/skills --skill cloudinary-next -a claude-code
Open on GitHub

What cloudinary-next does

The skill kicks in when a Next.js project uses next-cloudinary or the Node SDK v2. The agent classifies the task first: render a transformed image in JSX, build a URL string, embed a video player, upload from the browser or the server, delete an asset, build an overlay, or generate a social card. Then it loads only the reference file that task needs instead of the whole set.

Hard rules come before any detailed reference. Components and URL helpers come from next-cloudinary: CldImage, CldVideoPlayer, CldUploadWidget, CldUploadButton, CldOgImage, getCldImageUrl, getCldOgImageUrl, getCldVideoUrl. The Node SDK v2 (import { v2 as cloudinary } from 'cloudinary') stays server-side. CLOUDINARY_API_SECRET never reaches the browser, and NEXT_PUBLIC_CLOUDINARY_API_SECRET is off the table. Upload widgets and the player sit behind 'use client', while Server Actions and route handlers that import cloudinary must run on the Node.js runtime.

Separate references cover signed uploads, deletes, overlays, responsive images, TypeScript narrowing, and common errors. Deletes take a public ID, not a delivery URL, and videos or raw assets need resource_type. When a detail is version-sensitive, the skill tells the agent to check the official docs rather than trust memory. That is the part worth having: fewer invented prop names in your diff.

What it helps with

  • render a transformed Cloudinary image in JSX
  • build an image or video URL as a string
  • set up a signed upload in the App Router
  • delete an asset by public ID with cache invalidation
  • fix import and server/client boundary errors

Example prompts for the agent

  • Add CldImage to the product page with responsive sizes and a 4:3 crop
  • Write a route handler for signed uploads in the App Router
  • Review this component: is CLOUDINARY_API_SECRET leaking to the client?

How to install cloudinary-next

1Skills CLI (Vercel)

npx skills add cloudinary-devs/skills --skill cloudinary-next -a claude-code

2Manually: put the files in place

~/.claude/skills/cloudinary-next/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/cloudinary-next/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about cloudinary-next

How do I install cloudinary-next in Claude?

Run npx skills add cloudinary-devs/skills --skill cloudinary-next -a claude-code. The skill lands in ~/.claude/skills/cloudinary-next/SKILL.md.

What does cloudinary-next do?

It walks the agent through Next.js code that uses Cloudinary: picking the right component or helper, transformations, uploads, deletes, overlays, and OG images. It also handles error fixes and reviews existing implementations.

Which rules does the skill enforce?

CLOUDINARY_API_SECRET stays out of the browser, widgets and the player go behind 'use client', and code importing the Node SDK v2 runs on the Node.js runtime. Deletes use a public ID, not a delivery URL.

Source text

SKILL.md · MIT
---
name: cloudinary-next
description: Guidance for building, debugging, and reviewing next.js apps that use cloudinary through next-cloudinary and the cloudinary node sdk v2. Use for tasks involving CldImage, CldVideoPlayer, CldUploadWidget, CldUploadButton, CldOgImage, GetCldImageUrl, GetCldOgImageUrl, GetCldVideoUrl, signed uploads, server uploads, deletes, transformations, responsive images, overlays, social cards, environment variables, and common Cloudinary errors.
license: MIT
metadata:
  author: cloudinary
  version: '1.0.0'
---

# Cloudinary Next

## Purpose

Use this skill to help developers build, debug, or review Next.js projects that integrate Cloudinary through `next-cloudinary` and, for server-only operations, the Cloudinary Node SDK v2.

This skill is organized for progressive loading. Do not load every reference file by default. Start with the workflow below, then load only the reference files needed for the user's task.

## Core workflow

1. Classify the user's goal before writing code:
   - render a transformed Cloudinary image in JSX
   - generate a Cloudinary URL string
   - embed a video player
   - upload from the browser
   - perform a signed upload
   - upload from the server
   - delete an asset
   - build an overlay or text overlay
   - generate an OG/social image
   - fix TypeScript, environment, import, runtime, or upload errors
   - review an existing implementation
2. Load the relevant reference file from the map below.
3. Apply the non-negotiable rules in this `SKILL.md` before using any detailed reference.
4. For code review or debugging, load `references/troubleshooting.md` plus the task-specific reference.
5. When a detail is version-sensitive or not covered here, consult the official documentation linked in `references/official-docs.md` and prefer official prop names and event names over memory.

## Non-negotiable rules

- Use `next-cloudinary` for Next.js components and URL helpers: `CldImage`, `CldVideoPlayer`, `CldUploadWidget`, `CldUploadButton`, `CldOgImage`, `getCldImageUrl`, `getCldOgImageUrl`, and `getCldVideoUrl`.
- Use the Cloudinary Node SDK v2 only for server-side operations: `import { v2 as cloudinary } from 'cloudinary'`.
- Never expose `CLOUDINARY_API_SECRET` to the browser. Never create `NEXT_PUBLIC_CLOUDINARY_API_SECRET`.
- Put upload widgets, video player UI, and any component with React event handlers behind a Client Component boundary with `'use client'`.
- `CldImage` may be used from a Server Component for static rendering, but if you add client-only props such as `onLoad` or local state, move it into a Client Component.
- Do not import `cloudinary` in Client Components or Edge runtime code. Server Actions and route handlers that import `cloudinary` must run on the Node.js runtime.
- Use documented `next-cloudinary` prop names and shapes. Do not infer prop names from Cloudinary URL transformation parameters.
- Use `onSuccess` for upload widget success handling. Do not use deprecated upload callback names unless the installed version explicitly documents them.
- For deletes, pass a public ID, not a delivery URL. Pass `resource_type` when deleting videos or raw assets, and use `invalidate: true` when CDN cache invalidation is desired.

## Reference map

Load the smallest useful set of references:

- `references/official-docs.md` — official documentation links and the global prop-name rule.
- `references/api-decision-tree.md` — choose the correct Cloudinary API/component/helper for a user goal.
- `references/project-setup.md` — install packages, configure Next.js image domains, configure upload presets, and create starter setup files.
- `references/environment.md` — environment variables and TypeScript process env typing.
- `references/imports.md` — correct import paths and server/client boundaries.
- `references/cldimage.md` — `CldImage`, sample assets, and `getCldImageUrl` usage.
- `references/cldimage-transformations.md` — transformation props, generative editing, optimization, raw transformations, and crop traps.
- `references/responsive-images.md` — responsive image sizing and `sizes` guidance.
- `references/video-player.md` — `CldVideoPlayer`, required CSS, and client-only player setup.
- `references/upload-widget.md` — browser uploads, upload widget/button usage, events, and signed-vs-unsigned tradeoffs.
- `references/signed-uploads.md` — App Router signature endpoint pattern.
- `references/server-upload-delete.md` — Server Action and route-handler upload/delete patterns with the Node SDK v2.
- `references/overlays.md` — image overlays and text overlay prop shapes.
- `references/og-images.md` — App Router and Pages Router OG/social card patterns.
- `references/typescript.md` — upload result narrowing, server upload result types, refs, and avoiding `any`.
- `references/troubleshooting.md` — common error messages and fixes.
- `references/quick-checklist.md` — final code-review checklist and best practices.

## Output expectations

When generating code, include the file path, the complete relevant code block, and a short note about where the code runs: Client Component, Server Component, Server Action, or route handler.

When reviewing code, report issues in this order: secret exposure, server/client boundary mistakes, import/runtime mistakes, incorrect component/helper choice, incorrect prop/event names, missing TypeScript narrowing, and missing cache invalidation or resource type handling.

When using reusable templates, copy from `assets/app-router-signature-route.ts`, `assets/server-action-upload.ts`, or `assets/server-action-delete.ts` and adapt names, folders, and return values to the user's project.

© cloudinary · MIT · cloudinary-devs/skills

Similar skills

Everything for Frontend and UI →

From the same set4

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor