Generate and edit images, video, audio, text and 3D on FLORA's AI creative canvas.
Workflows for pointing your agent at FLORA and getting real work back — not just tool access.
FLORA's MCP server gives any agent the ability to generate images, video, audio and text, run saved multi-step techniques, and read and write a FLORA canvas. That is the raw capability. This repo is the judgment layer: when to use which model, what the gotchas are, what a good result looks like, and what to do when one comes back wrong.
Skills document tested workflows and measured observations. Model behavior and tool availability can change; check the connected server before following an example.
FLORA maintains these skills and publishes updates here through reviewed pull requests.
One command. FLORA's MCP server is hosted, authenticated over OAuth, and needs no API key — the first call opens a browser to sign in.
Claude Code
claude mcp add --transport http flora https://agents.flora.ai/mcp
Codex
codex mcp add flora --transport http https://agents.flora.ai/mcp
Cursor, Windsurf, Zed, and other MCP clients — add to your MCP config:
{
"mcpServers": {
"flora": {
"type": "http",
"url": "https://agents.flora.ai/mcp"
}
}
}
Claude.ai (web and desktop) — add it as a custom connector:
https://agents.flora.ai/mcpChatGPT — FLORA is in the app directory; enable it there.
The server is the capability; the skills are how your agent knows what to do with it.
Claude Code — one command, skills and server together. This repo is also a plugin marketplace, so installing it wires up the MCP server and every skill:
claude plugin marketplace add florafauna-ai/flora-mcp-skills
claude plugin install flora-mcp-skills@flora
Any other agent — copy the skills in:
git clone https://github.com/florafauna-ai/flora-mcp-skills.git
cp -r flora-mcp-skills/skills/* .codex/skills/ # Codex
cp -r flora-mcp-skills/skills/* .cursor/rules/ # Cursor
Claude.ai — there is no plugin install, so pick one of three. claude plugin is
Claude Code only; on web and desktop the skills go in by hand.
A Project, if you use FLORA regularly. Create a Project, open Set custom
instructions, and paste in the contents of the skill you want — for example
skills/flora-batch-generate/SKILL.md. Every
chat inside that Project then has it, with nothing to re-paste. This is the most
reliable option and it costs nothing.
Upload it as a Skill, for something reusable across Projects. Claude.ai takes a
zipped skill folder, and this repo's layout is already the right shape — one directory
per skill with a SKILL.md inside it. Zip the one you want:
git clone https://github.com/florafauna-ai/flora-mcp-skills.git
cd flora-mcp-skills/skills && zip -r flora-batch-generate.zip flora-batch-generate
Then upload it from Claude's settings, under skills/capabilities. Zipping from the repo rather than downloading a prebuilt archive means you always get the current version.
Or just ask for it inline — see the raw-URL option below, which needs no setup at all and works in a normal chat.
Or no install at all — point your agent straight at one skill:
Read https://raw.githubusercontent.com/florafauna-ai/flora-mcp-skills/main/skills/flora-batch-generate/SKILL.md
and follow it for these 5 products:
PO-01 a matte black ceramic pour-over coffee dripper
WB-04 a brushed steel insulated water bottle
AP-09 a folded oatmeal linen apron
CB-02 a walnut wood cutting board, rectangular
SB-03 a stack of three speckled stoneware bowls
One consistent studio style across all five: seamless warm-grey backdrop,
soft softbox from camera left, subtle contact shadow, 85mm, centred, no props.
New skills get added to this repo, and existing ones get corrected as we measure things that turn out to be wrong. None of that reaches you on its own. An installed plugin is a frozen snapshot — it will not tell you a new skill exists, and it will keep working happily on an old copy. Updating is something you do, not something that happens.
Claude Code — two commands, no reinstall and no re-auth. Your MCP connection is untouched:
claude plugin marketplace update flora
claude plugin update flora-mcp-skills
The first refreshes this repo's marketplace listing; the second pulls the new version. Skipping the first means the second has nothing new to find. Changes apply on your next session — plugins load at start-up, so restart your agent afterwards.
If it reports already at the latest version, you are genuinely current.
claude plugin list shows the version you are on.
Any other agent — re-copy. There is no update command, so pull the repo again and overwrite:
cd flora-mcp-skills && git pull
cp -r skills/* .codex/skills/ # Codex
cp -r skills/* .cursor/rules/ # Cursor
Claude.ai — re-paste or re-zip. A Project's custom instructions and an uploaded
Skill are both snapshots taken when you added them. Paste the current SKILL.md in
again, or re-zip the folder from a freshly pulled clone and re-upload.
Raw URL — nothing to do. That path always serves main, so it is current the moment
we push. If you want to be sure you are reading today's version of a skill, use it.
The single highest-leverage thing you can do with FLORA's MCP server is stop treating it as a chatbot and start treating it as a pipeline.
One request at a time, waiting for each, is the default an agent falls into and it is the slowest possible use of the server. FLORA runs generations concurrently. The serialisation is entirely on the agent's side.
Measured on a real six-item batch: fired together, 15.8 seconds. The same six run one after another: about 150 seconds. Identical cost, identical outputs, one tenth the wall clock — and the gap widens linearly with the size of your list.
flora-batch-generateis the flagship skill in this repo. If you read one thing here, read that. It turns a product list, a set of campaign variants, a folder of source images, or a spreadsheet into one parallel batch, polls it correctly, and tells you exactly what failed and why.
| Skill | Use it when |
|---|---|
| flora-batch-generate ★ | You have a list — products, SKUs, campaign variants, localisations, scenes — and want one asset per row under a single consistent style. Handles parallel firing, batch polling, per-item variables, partial failure and retry classification. Start here. |
| Skill | Use it when |
|---|---|
| flora-refine-loop ★ | The first result is wrong and you need to drive it to a specific goal — "that's not quite right", "closer, but the X is off". Uses a free vision judge to name the defect, changes the prompt to fix it, and stops when the goal is met or the defect stops moving. Reach for this the moment someone is re-running the same prompt hoping for a better roll. |
| Skill | Use it when |
|---|---|
| flora-motion-compositor | The subject already exists — a UI screenshot, a logo, a product photo, a Figma export — and you need real motion-graphics shots of it: 3D-tilted screens, staggered type reveals, camera moves, grade. Nothing is generated; every pixel comes from a file or a font, so type is pin-sharp, spelling is correct, and two renders of a scene are byte-identical. Renders from a JSON scene graph at $0 and ~12s a shot, which makes re-rendering a whole film after a design change free. |
| Skill | Use it when |
|---|---|
| flora-script-to-video | You have a script or narrative and want animated clips. Staged pipeline with approval gates — script → shot list → consistent keyframes → motion — because a clip costs 30–90x its keyframe, so a drifted still must be caught before it is animated. Delivers ordered clip URLs, not a finished cut. |
| Skill | Use it when |
|---|---|
| flora-run-technique | You want a saved multi-step FLORA workflow applied to a source image — background swap, relight, upscale, model swap, sketch-to-render. |
| Skill | Use it when |
|---|---|
| flora-video-resize | You have one finished video and need it in every placement's aspect ratio — 9:16, 16:9, 4:5, 1:1 — without black bars or a crop that loses the subject. Generatively reframes through FLORA's video-to-video models, holding subject, wardrobe, motion, lighting, grade, on-screen text and timing from the source. |
| flora-image-resize | Same job for a still. Reframes one image into other ratios through i2i-qwen-image-edit, holding subject, props, palette and grade. States plainly that it re-renders the frame rather than extending it, so an already-approved asset should be padded with the free AR action instead. |
| Skill | Use it when |
|---|---|
| flora-mockup-deck | You have a finished ad creative and need it placed in the world — out-of-home placements, social resizes, and an annotated A4 PDF with the brief printed beside each placement. The artwork is reproduced exactly and never regenerated. Also takes a written brief instead of artwork — "a campaign deck of a flower" — and generates the master creative first, for one extra generation. |
| flora-pdp-deck | You have a product photo — and a model frame if you're lucky — and need a shoppable set: studio plates, on-model views, and an A4 deck. Works from a single image, and says plainly what one image can and cannot buy you. |
| Skill | Use it when |
|---|---|
| flora-brand-ad-pipeline | A product launch needs creative and everything after it — generation under a locked brand treatment, then Drive for archive, then Supabase for hosting, then Meta Ads creatives left paused for a human. The brand is an input, not an instruction: it lives in a saved technique, a reference image and a brand.json, never in prose an agent retypes. Pipeline state lives in a manifest, so a re-run repairs rather than duplicates. |
| Skill | Use it when |
|---|---|
| flora-trend-board | A design team needs to know what is moving in a category — colourways, silhouettes, materials, competitor launches — and nobody reads the written trend report. Scans a named source set on a schedule, ranks signals by velocity rather than by how interesting they sound, and posts generated mood boards into the channel the team already lives in. Carries a divergence rule so four boards do not come back looking like one board four times. |
| Skill | Use it when |
|---|---|
| flora-brand-consistency-audit | A batch is individually acceptable but collectively inconsistent, and it is about to go to a client, an ad platform or a PDP. Judges a set against the brand's actual rules — identity, palette, treatment, crop system, lockups, background, output specs — and returns findings with severity, evidence and a fix each. Reads the set before the assets, and close-reads a stratified sample, because every image it looks at costs a vision call. |
| Skill | Use it when |
|---|---|
| flora-canvas-iterate | The user refers to an existing project or canvas — "the hero images from last week", "what's in the Meridian project" — and wants to revise rather than start over. |
| flora-open-project | You are starting a session on one specific canvas — from a workspace and project id, a pasted link, or FLORA's "Open in agent" button. Signs an in-harness browser (Claude Code Desktop, Cowork) into the canvas with WebMCP via flora_open_project, or falls back to the hosted tools, then reads the canvas and offers starters or two ways to continue. |
★ = flagship, most heavily tested.
Copy one of these. Skills fire on what you ask for, not on being named — you should never have to type a skill's name.
Here are 24 products from our spring catalogue. Generate a PDP shot for each one — same studio setup on every product, seamless warm-grey, soft key from camera left. Total the cost before you spend anything.
Take this campaign line and give me 12 localised versions, one per market, same art direction throughout. Markets are in the attached sheet.
I have a folder of 40 product URLs. One hero image each, consistent lighting. Tell me what it'll cost first.
Generate a single white ceramic mug on a plain black surface. Handle pointing right, top-down bird's-eye view looking straight down, no other objects. Keep refining until it matches — max 3 rounds.
That's not quite right, try again.
(The skill should refuse to re-roll blind and ask what "right" means. If it just regenerates, the skill didn't fire — that's the bug to look for.)
A photo of a clock face showing exactly 4:37. Refine until the hands are correct.
(Models are bad at clock hands. Correct behaviour is stopping once the same defect survives a real prompt change, and handing you options — not burning more rounds.)
Turn this script into a video. Same character and lighting across every shot.
INT. DINER — NIGHT. Rain on the window. A woman sits alone with a coffee. She checks her watch. The door opens. She looks up.
Storyboard this scene and animate it — 6 shots, 5 seconds each, 16:9. Show me the keyframes before you spend anything on video.
Here's a 30-second ad script and our brand character sheet. Build the keyframes off that reference, then animate. Quote the video stage separately.
Mock this poster up out of home — I want to see it on a wall, a bus shelter, that kind of thing. Plus social sizes.
What would this campaign key visual look like in the wild? Square-on shots, and don't touch the artwork.
Give me a placement deck for this ad, with 1:1, 4:5 and 9:16 resizes for social.
Create a campaign deck of a flower.
(No artwork attached, so the skill writes the poster first — one generation — shows it to you, and only places it once you say yes. Four wrong placements is the failure it is avoiding, and they are not re-rollable.)
Here's the strawberry launch — six SKUs, our usual treatment. Get them staged for me to review.
Build the ad set for the new store opening: generate, archive, host, and leave the Meta creatives paused.
Re-run the summer campaign — two of the ads didn't make it into Meta last time.
(The manifest is the point: a re-run should repair the two missing rows, not regenerate and re-upload all of them.)
Here's a photo of our candle. I need PDP shots for the product page, and a deck at the end.
Product shot and a full-length model frame attached. Shoot it on her, studio background, and de-brand it.
I've only got this one product photo. What can you actually get me from it?
(The skill should say plainly that one photo buys one plate, not four — asking a single reference for four angles returns four near-duplicates and bills for all of them. If it promises a full multi-angle set, that's the bug.)
Put this product on a clean white background.
Match the lighting in this shot to the reference image.
What can FLORA actually do to an image I already have?
What's in my Meridian project?
Pull up the hero images I made last week and redo them warmer — less blue in the shadows.
Show me what I've generated in this project and what it cost.
The bar is set by flora-batch-generate and flora-mockup-deck. Both share a shape,
and it is not "a description of the tools":
265ms, 3.45x, 17% undercount, limit: 100. Not "fast",
not "expensive", not "usually works".Thin wrappers around tool descriptions are not useful — agents can already read tool schemas. The value is the judgment that only comes from running it.
Some of the best FLORA workflows are already being built by users, independently of us. Two we know of:
Neither started as a feature request. Both are the kind of thing this repo exists to surface, so that the next person does not have to rediscover it.
If you have built a workflow that works, send it back. The bar is the four bullets above. Open an issue describing the workflow or correction; a maintainer will review it and include accepted changes in a future update.
https://agents.flora.ai/mcp (streamable HTTP, OAuth)flora_discover_skills lists available skills; pass a
skill name to load its instructions.flora_create_generations,
flora_list_generations, flora_run_technique, flora_list_models and friends.
Create 1–20 generations with { "generations": [...] }, including a one-item array for
a single generation. Retain successful run IDs and poll with { "run_ids": [...] };
include technique_id for technique runs. Omit run IDs only to list history. Never
retry a whole batch because one submission failed. The hosted server no longer has an
execute code tool; flora_list_tools lists what the connection offers.Check the connected server's advertised tool list and schemas before running a workflow. The examples target the plural hosted generation tools; older cached catalogs need refreshing.
endpoint https://agents.flora.ai/mcp (streamable HTTP, Clerk OAuth)
API base https://app.flora.ai/api/v1
SDK methods generations.create · generations.list · generations.retrieve
models.list · projects.create · assets.create
techniques.runs.create · techniques.runs.retrieve
Two things that do not exist and are easy to reach for: models.retrieve (use
models.list().find()) and runs.action (use the flora_run_action tool).
FLORA also ships an in-browser MCP surface (WebMCP) that operates a live canvas
directly. It has a different, larger tool vocabulary — flora_run_batch,
flora_get_batch_status, flora_get_generations, flora_edit_layers and others — and
some skills explicitly distinguish that path. If you are writing a skill against the browser surface,
check its tool names separately; they are not interchangeable with the hosted server's.
This plugin is Markdown skills plus a reference to FLORA's hosted MCP server. It has no hooks, no background processes and no telemetry of its own.
https://agents.flora.ai/mcp: prompts, reference images and files you
provide, model and technique choices, and project or canvas content you ask it to
read or change. You sign in with your own FLORA account over OAuth; nothing is sent
until you connect. Generations run against your FLORA account and bill its usage,
and results are stored in your FLORA workspace and served from media.flora.ai.flora-motion-compositor includes one readable Python script,
scripts/comp.py, that renders frames on your machine with ffmpeg and, for SVG
input, headless Chrome. It makes no network calls. The deck skills render HTML and
PDFs locally with headless Chrome in the same way.flora-trend-board), posting boards
to a team channel, or leaving paused ads in Meta Ads Manager
(flora-brand-ad-pipeline). Those steps run through connectors or credentials you set
up yourself; the plugin ships none.FLORA's Privacy Notice and Terms of Service apply to data sent to FLORA. Questions: open an issue or email support@florafauna.ai.
MIT. See LICENSE.
This listing does not have a supported local package template. Use the maintainer’s documentation for its hosted endpoint, authentication, and client-specific setup. No install command has been inferred.