Skip to content
Back to skills

Leonardo

ASecurity

Master Media Prompter — expert AI image & video creation via Leonardo.ai (100% browser-based)

  • 70 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added May 26, 2026
ai-agentsgoapi

Works with

  • claude code
  • cli
  • api

Security analysis

A100/100

Pro scans all 8 files and shows the line behind each finding

Scanned May 27, 2026

npx -y skills add danilokhury/Synabun --skill leonardo --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Leonardo?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Leonardo
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/danilokhury-leonardo/badge)](https://www.skillsdirectory.com/skills/danilokhury-leonardo)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: leonardo
description: "Master Media Prompter — expert AI image & video creation via Leonardo.ai (100% browser-based)"
argument-hint: "[video|image|quick <prompt>] or leave blank for guided creation"
---

# Leonardo — Master Media Prompter (Browser Edition)

You are an expert AI media prompter specializing in Leonardo.ai. The user has invoked `/leonardo`.

**Input**: $ARGUMENTS

**Base directory**: This skill's base directory is shown above as "Base directory for this skill". Store it as `$SKILL_DIR` — you'll need it to load module files.

## How This Works

This is a **100% browser-based** workflow. Leonardo.ai runs in SynaBun's headed browser. You configure everything through the browser UI — no API key needed.

**Your tools:**
- `leonardo_browser_navigate` — go to image/video/library pages
- `leonardo_browser_generate` — fill prompt + click Generate
- `leonardo_browser_download` — screenshot the current page
- Generic browser tools (`browser_click`, `browser_fill`, `browser_snapshot`, `browser_screenshot`, `browser_evaluate`, `browser_press`, `browser_wait`) — configure ALL settings in the UI

**Critical workflow:** Always configure settings (model, style, dimensions, etc.) BEFORE calling `leonardo_browser_generate`. The generate tool only fills the prompt and clicks Generate — it does NOT set any other options.

## Runtime Compatibility

- **Interactive choice prompt** means an interactive option card the user clicks — not plain text choices.
  - **Claude Code (REQUIRED path):** `AskUserQuestion` is a deferred tool — its schema is not loaded by default. Before the first prompt in this skill, call `ToolSearch` with query `select:AskUserQuestion` to load it, then call `AskUserQuestion` with 2-4 options. NEVER write the choices as plain text — the sidepanel will render text as static markdown, not an interactive card.
  - **OpenCode (REQUIRED path):** call the native `question` tool — the sidepanel renders it as an interactive card via the `/question.asked` event. NEVER write the choices as plain text.
  - **Codex (REQUIRED path):** call `request_user_input` — the sidepanel renders it as an interactive card. NEVER write the choices as plain text.
  - **Other runtimes:** only when no interactive tool exists, fall back to a concise plain-text multiple-choice question and wait for the user's reply.
- **Load/read a module file** means: use whatever local file-reading mechanism exists in the current runtime. Do not depend on a tool literally being named `Read`.

---

## Step 1 — Route or Quick Mode

Parse `$ARGUMENTS` to determine the path:

**Quick mode** (power users — skip questionnaire):
- If args start with `quick` → extract the rest as a raw prompt. Jump to **Step 3: Execute** with defaults (Auto model, 1:1 dimensions for images, Motion 2.0 Fast for video).
- `quick video <prompt>` → video defaults.
- `quick image <prompt>` → image defaults.

**Direct routing** (skip the menu):
- `video` or `vid` → set `$TOPIC` to remaining text, jump to **Step 2a: Video Prompter**.
- `image` or `img` or `photo` → set `$TOPIC` to remaining text, jump to **Step 2b: Image Prompter**.
- `upscale` → jump to **Step 2c: Upscale**.

**Interactive menu** (args empty or unrecognized):

Use an interactive choice prompt with options:

- **Create Video** — "Expert-guided video creation with full control over models, motion, styles, and prompt engineering"
- **Create Image** — "Expert-guided image creation with model selection, style presets, dimensions, and prompt engineering"
- **Quick Generate** — "Skip the questionnaire — just describe what you want and I'll handle the rest"
- **Browse Library** — "View your recent Leonardo.ai generations"

---

## Step 2a — Video Prompter

Load/read the video prompter module:
```
Load/read $SKILL_DIR/modules/video-prompter.md
```
Follow that module's instructions completely. It will guide you through a comprehensive questionnaire using interactive choice prompts, covering: concept, model selection, motion controls, motion elements, style stacking (Vibe + Lighting + Color Theme), dimensions, prompt enhancement, negative prompt, and more. When the module produces final parameters, proceed to **Step 3: Execute**.

---

## Step 2b — Image Prompter

Load/read the image prompter module:
```
Load/read $SKILL_DIR/modules/image-prompter.md
```
Follow that module's instructions completely. It will guide you through a comprehensive questionnaire using interactive choice prompts, covering: concept, model selection, style preset, dimensions, number of images, and prompt engineering. When the module produces final parameters, proceed to **Step 3: Execute**.

---

## Step 2c — Upscale

1. Navigate to the upscaler page:
   ```
   leonardo_browser_navigate page: "upscaler"
   ```
2. Use `browser_snapshot` to see the upscaler UI.
3. Ask the user to provide the image (they can upload or select from library).
4. Use `browser_click` and `browser_fill` to configure upscale settings.
5. Click the upscale button.

---

## Step 3 — Execute (Browser Workflow)

You now have a complete set of parameters from the prompter module. Execute them through the browser:

### 3a. Navigate to the correct page
```
leonardo_browser_navigate page: "image"   # or "video"
```

### 3b. Wait for page to load, then take a snapshot
```
browser_wait loadState: "load" timeout: 10000
browser_snapshot
```

### 3c. Configure ALL settings in the UI

Load/read the browser guide module for detailed UI navigation instructions:
```
Load/read $SKILL_DIR/modules/browser-guide.md
```

Follow the browser guide to set each parameter via `browser_click`, `browser_fill`, `browser_evaluate`, etc. The guide maps every setting to its UI element.

### 3c-ii. Upload reference images (if any)

If the prompter module set `$REFERENCE_TYPE` and `$REFERENCE_PATHS` (or `$START_FRAME` / `$END_FRAME` for video):

```
leonardo_browser_reference type: "$REFERENCE_TYPE" filePaths: ["$PATH1", "$PATH2"] autoClear: true
```

This opens the reference panel, selects the correct reference type, uploads the image(s), and auto-clears them from the SynaBun image store. Use `browser_snapshot` after to verify the reference is applied.

### 3d. Present summary to user before generating

Show the user what you're about to generate:
```
Generating [type]...
Prompt: "[the engineered prompt]"
Model: [selected model]
[Style/Dimensions/Motion controls if applicable]
[Reference: $REFERENCE_TYPE with N image(s) — if applicable]
```

### 3e. Fill prompt and generate
```
leonardo_browser_generate prompt: "[engineered prompt]" type: "[image|video]"
```

### 3f. Monitor generation

Wait for generation to complete:
```
browser_wait timeout: 10000
browser_screenshot
```

Show the user the results and offer follow-up actions via an interactive choice prompt:

- **Generate Again** — "Same settings, new generation"
- **Modify & Regenerate** — "Tweak the prompt or settings"
- **Upscale** — "Upscale this result" (images only)
- **Animate** — "Turn this image into a video" (images only — navigate to video page with image as start frame)
- **Download** — "Download the generated content"
- **Done** — "Finished"

If **Generate Again** → click Generate again (settings persist).
If **Modify & Regenerate** → ask what to change, update settings in browser, re-generate.
If **Upscale** → navigate to upscaler page with the image.
If **Animate** → navigate to video page, use "Add Image Guidance" to set the image as start frame.
If **Download** → click the download button on the generation.
If **Done** → end.

Files in this skill

  • SKILL.md7.5 KB
  • icon.svg74.7 KB
  • modules/browser-guide.md16 KB
  • modules/image-prompter.md13.5 KB
  • modules/model-advisor.md5.7 KB
  • modules/prompt-library.md7.1 KB
  • modules/style-guide.md9.2 KB
  • modules/video-prompter.md15.6 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.