skills/cloudinary/SKILL.md
Manage Cloudinary media assets, transformations and upload via REST API
npx skillsauth add alanalvestech/hitank cloudinaryInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Connect to the Cloudinary REST API to manage media assets, folders, transformations, uploads and usage stats. Pure Ruby, zero gems — stdlib only.
scripts/
├── auth.rb # Basic auth (api_key:api_secret) + cloudinary_request helper (required by all scripts)
├── check_setup.rb # Check if credentials exist (outputs OK or SETUP_NEEDED)
├── save_token.rb # Save and validate cloud name, API key and API secret
├── resources.rb # List image resources
├── resource.rb # Get single image details
├── upload.rb # Upload image from URL
├── delete.rb # Delete a resource by public ID
├── folders.rb # List root folders
├── subfolders.rb # List subfolders of a folder
├── transformations.rb # List named transformations
└── usage.rb # Get account usage stats
ruby ~/.claude/skills/cloudinary/scripts/check_setup.rb
If the output is OK, proceed to the Flow section.
If the output is SETUP_NEEDED, guide the user step by step. Present ONE step at a time, wait for the user to confirm before moving to the next.
Step 1 — Ask the user for their Cloudinary credentials:
You need your Cloudinary Cloud Name, API Key and API Secret.
Go to the Cloudinary Console Dashboard: https://console.cloudinary.com/settings/api-keys
Copy the Cloud Name, API Key and API Secret and paste them here (all three, separated by spaces).
Step 2 — When the user pastes the credentials, save them:
ruby ~/.claude/skills/cloudinary/scripts/save_token.rb 'CLOUD_NAME' 'API_KEY' 'API_SECRET'
If the script outputs an error, the credentials are invalid. Ask the user to double-check and try again.
If setup is not complete, DO NOT proceed to the Flow. Complete all steps first.
The argument $ARGUMENTS may contain a public ID or folder name.
List image resources:
ruby ~/.claude/skills/cloudinary/scripts/resources.rb
ruby ~/.claude/skills/cloudinary/scripts/resources.rb --type upload
ruby ~/.claude/skills/cloudinary/scripts/resources.rb --type fetch
ruby ~/.claude/skills/cloudinary/scripts/resources.rb --prefix my_folder
List root folders:
ruby ~/.claude/skills/cloudinary/scripts/folders.rb
List subfolders:
ruby ~/.claude/skills/cloudinary/scripts/subfolders.rb FOLDER
Present the results to the user. If $ARGUMENTS matches a public ID, jump to Step 2. If it matches a folder, show its contents.
ruby ~/.claude/skills/cloudinary/scripts/resource.rb PUBLIC_ID
Present the resource info (format, dimensions, size, URL, tags, etc.) and ask what the user wants to do.
Upload image from URL (requires user confirmation):
Ask: "Do you want to upload this image?" Show the URL and target public ID. Only execute after a "yes".
ruby ~/.claude/skills/cloudinary/scripts/upload.rb --url 'https://example.com/image.jpg' --public_id 'my_image'
Delete a resource (requires user confirmation):
Show the resource details first, then ask: "Do you want to delete this resource?" Only execute after a "yes".
ruby ~/.claude/skills/cloudinary/scripts/delete.rb PUBLIC_ID
List transformations:
ruby ~/.claude/skills/cloudinary/scripts/transformations.rb
Get account usage stats:
ruby ~/.claude/skills/cloudinary/scripts/usage.rb
~/.config/cloudinary/cloud_name, ~/.config/cloudinary/api_key, ~/.config/cloudinary/api_secret (outside the repo, never commit)https://api.cloudinary.com/v1_1/{cloud_name}development
Manage Zendesk tickets, users, organizations and knowledge base via REST API
development
Post and manage tweets on X (formerly Twitter) via API v2
development
Manage Vercel projects, deployments, domains and environment variables via API
development
Manage Twilio SMS, calls, phone numbers and usage via REST API