Inside this agent
README.md · the author's own words# FLORA MCP Skills Workflows for pointing your agent at [FLORA](https://flora.ai) 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. ---
Word-for-word excerpt, not a result. Read the full README.md ↓
Files of Flora MCP skills
florafauna-ai/
Show the full text467 lines
FLORA MCP Skills
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.
Install
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:
- Copy
https://agents.flora.ai/mcp - Go to Settings → Connectors → Add custom connector (direct link)
- Paste, sign in, and start generating
ChatGPT — FLORA is in the app directory; enable it there.
Then add the skills
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.
Keeping the skills up to date
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.
Start here: stop chatting, start batching
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.
Skills by use case
Scale — many items, one treatment
| 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. |
Refine — get one thing right, without burning money
| 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. |
Composite — animate what already exists
| 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. |
Sequence — script to moving pictures
| 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. |
Transform — you already have the image
| 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. |
Reformat — one asset, every placement
| 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. |
Present — turn finished work into a deliverable
| 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. |
Ship — all the way to the ad platform
| 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. |
Watch — keep a team plugged in
| 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. |
Check — judge it before it ships
| 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. |
Iterate — build on what exists
| 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.
Try it
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.
flora-batch-generate
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.
flora-refine-loop
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.)
flora-script-to-video
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.
flora-mockup-deck
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.)
flora-brand-ad-pipeline
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.)
flora-pdp-deck
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.)
flora-run-technique
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?
flora-canvas-iterate
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.
What a good skill looks like here
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":
- A law. One sentence naming the invariant the skill exists to protect. "N items is one wait, not N waits." "A re-run with an unchanged prompt is not a refinement." If you cannot write that sentence, the skill is not ready.
- Measured numbers.
265ms,3.45x,17% undercount,limit: 100. Not "fast", not "expensive", not "usually works". - Named gotchas. The specific thing that silently ate someone's budget, written down with what it looked like when it happened. The most valuable content in this repo is the failure someone already paid for.
- What it does not do. Where the skill stops, stated plainly, so an agent does not improvise past its tested edge.
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.
Contributing
Some of the best FLORA workflows are already being built by users, independently of us. Two we know of:
- Pedro Padilla's agentic marketing pipeline — an end-to-end campaign flow driven through the MCP server rather than the canvas.
- Will Bovill's Figma + FLORA storyboard workflow — pulling frames from Figma, generating against them, and assembling the result back into a board.
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.
Reference
- FLORA MCP endpoint —
https://agents.flora.ai/mcp(streamable HTTP, OAuth) - Workflow instructions —
flora_discover_skillslists available skills; pass a skill name to load its instructions. - API and SDK docs — docs.flora.ai.
- Calling FLORA from a skill — use the named tools:
flora_create_generations,flora_list_generations,flora_run_technique,flora_list_modelsand 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": [...] }; includetechnique_idfor technique runs. Omit run IDs only to list history. Never retry a whole batch because one submission failed. The hosted server no longer has anexecutecode tool;flora_list_toolslists what the connection offers.
Connection reference
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.
Data and privacy
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.
- What goes to FLORA. When Claude calls a FLORA tool, the plugin sends what that
call needs to
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 frommedia.flora.ai. - What stays local.
flora-motion-compositorincludes 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. - Other services, only when you ask. A few skills describe steps in tools you
already use — fetching trend sources you name (
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 [email protected].
Licence
MIT. See LICENSE.
| 1 | # FLORA MCP Skills |
| 2 | |
| 3 | Workflows for pointing your agent at [FLORA] and getting real work |
| 4 | back — not just tool access. |
| 5 | |
| 6 | FLORA's MCP server gives any agent the ability to generate images, video, audio and |
| 7 | text, run saved multi-step techniques, and read and write a FLORA canvas. That is the |
| 8 | raw capability. **This repo is the judgment layer**: when to use which model, what the |
| 9 | gotchas are, what a good result looks like, and what to do when one comes back wrong. |
| 10 | |
| 11 | Skills document tested workflows and measured observations. Model behavior and tool |
| 12 | availability can change; check the connected server before following an example. |
| 13 | |
| 14 | FLORA maintains these skills and publishes updates here through reviewed pull requests. |
| 15 | |
| 16 | |
| 17 | |
| 18 | ## Install |
| 19 | |
| 20 | One command. FLORA's MCP server is hosted, authenticated over OAuth, and needs no API |
| 21 | key — the first call opens a browser to sign in. |
| 22 | |
| 23 | **Claude Code** |
| 24 | |
| 25 | |
| 26 | claude mcp add --transport http flora https://agents.flora.ai/mcp |
| 27 | |
| 28 | |
| 29 | **Codex** |
| 30 | |
| 31 | |
| 32 | codex mcp add flora --transport http https://agents.flora.ai/mcp |
| 33 | |
| 34 | |
| 35 | **Cursor, Windsurf, Zed, and other MCP clients** — add to your MCP config: |
| 36 | |
| 37 | |
| 38 | { |
| 39 | "mcpServers": { |
| 40 | "flora": { |
| 41 | "type": "http", |
| 42 | "url": "https://agents.flora.ai/mcp" |
| 43 | } |
| 44 | } |
| 45 | } |
| 46 | |
| 47 | |
| 48 | **Claude.ai** (web and desktop) — add it as a custom connector: |
| 49 | |
| 50 | Copy `https://agents.flora.ai/mcp` |
| 51 | Go to **Settings → Connectors → Add custom connector** |
| 52 | ([direct link]) |
| 53 | Paste, sign in, and start generating |
| 54 | |
| 55 | **ChatGPT** — FLORA is in the app directory; enable it there. |
| 56 | |
| 57 | ### Then add the skills |
| 58 | |
| 59 | The server is the capability; the skills are how your agent knows what to do with it. |
| 60 | |
| 61 | **Claude Code — one command, skills and server together.** This repo is also a plugin |
| 62 | marketplace, so installing it wires up the MCP server _and_ every skill: |
| 63 | |
| 64 | |
| 65 | claude plugin marketplace add florafauna-ai/flora-mcp-skills |
| 66 | claude plugin install flora-mcp-skills@flora |
| 67 | |
| 68 | |
| 69 | **Any other agent — copy the skills in:** |
| 70 | |
| 71 | |
| 72 | git clone https://github.com/florafauna-ai/flora-mcp-skills.git |
| 73 | cp -r flora-mcp-skills/skills/* .codex/skills/ # Codex |
| 74 | cp -r flora-mcp-skills/skills/* .cursor/rules/ # Cursor |
| 75 | |
| 76 | |
| 77 | **Claude.ai — there is no plugin install, so pick one of three.** `claude plugin` is |
| 78 | Claude Code only; on web and desktop the skills go in by hand. |
| 79 | |
| 80 | _A Project, if you use FLORA regularly._ Create a Project, open **Set custom |
| 81 | instructions**, and paste in the contents of the skill you want — for example |
| 82 | [`skills/flora-batch-generate/SKILL.md`]. Every |
| 83 | chat inside that Project then has it, with nothing to re-paste. This is the most |
| 84 | reliable option and it costs nothing. |
| 85 | |
| 86 | _Upload it as a Skill, for something reusable across Projects._ Claude.ai takes a |
| 87 | zipped skill folder, and this repo's layout is already the right shape — one directory |
| 88 | per skill with a `SKILL.md` inside it. Zip the one you want: |
| 89 | |
| 90 | |
| 91 | git clone https://github.com/florafauna-ai/flora-mcp-skills.git |
| 92 | cd flora-mcp-skills/skills && zip -r flora-batch-generate.zip flora-batch-generate |
| 93 | |
| 94 | |
| 95 | Then upload it from Claude's settings, under skills/capabilities. Zipping from the repo |
| 96 | rather than downloading a prebuilt archive means you always get the current version. |
| 97 | |
| 98 | _Or just ask for it inline_ — see the raw-URL option below, which needs no setup at all |
| 99 | and works in a normal chat. |
| 100 | |
| 101 | **Or no install at all** — point your agent straight at one skill: |
| 102 | |
| 103 | |
| 104 | Read https://raw.githubusercontent.com/florafauna-ai/flora-mcp-skills/main/skills/flora-batch-generate/SKILL.md |
| 105 | and follow it for these 5 products: |
| 106 | |
| 107 | PO-01 a matte black ceramic pour-over coffee dripper |
| 108 | WB-04 a brushed steel insulated water bottle |
| 109 | AP-09 a folded oatmeal linen apron |
| 110 | CB-02 a walnut wood cutting board, rectangular |
| 111 | SB-03 a stack of three speckled stoneware bowls |
| 112 | |
| 113 | One consistent studio style across all five: seamless warm-grey backdrop, |
| 114 | soft softbox from camera left, subtle contact shadow, 85mm, centred, no props. |
| 115 | |
| 116 | |
| 117 | ### Keeping the skills up to date |
| 118 | |
| 119 | New skills get added to this repo, and existing ones get corrected as we measure things |
| 120 | that turn out to be wrong. **None of that reaches you on its own.** An installed plugin |
| 121 | is a frozen snapshot — it will not tell you a new skill exists, and it will keep working |
| 122 | happily on an old copy. Updating is something you do, not something that happens. |
| 123 | |
| 124 | **Claude Code — two commands, no reinstall and no re-auth.** Your MCP connection is |
| 125 | untouched: |
| 126 | |
| 127 | |
| 128 | claude plugin marketplace update flora |
| 129 | claude plugin update flora-mcp-skills |
| 130 | |
| 131 | |
| 132 | The first refreshes this repo's marketplace listing; the second pulls the new version. |
| 133 | Skipping the first means the second has nothing new to find. **Changes apply on your |
| 134 | next session** — plugins load at start-up, so restart your agent afterwards. |
| 135 | |
| 136 | If it reports `already at the latest version`, you are genuinely current. |
| 137 | `claude plugin list` shows the version you are on. |
| 138 | |
| 139 | **Any other agent — re-copy.** There is no update command, so pull the repo again and |
| 140 | overwrite: |
| 141 | |
| 142 | |
| 143 | cd flora-mcp-skills && git pull |
| 144 | cp -r skills/* .codex/skills/ # Codex |
| 145 | cp -r skills/* .cursor/rules/ # Cursor |
| 146 | |
| 147 | |
| 148 | **Claude.ai — re-paste or re-zip.** A Project's custom instructions and an uploaded |
| 149 | Skill are both snapshots taken when you added them. Paste the current `SKILL.md` in |
| 150 | again, or re-zip the folder from a freshly pulled clone and re-upload. |
| 151 | |
| 152 | **Raw URL — nothing to do.** That path always serves `main`, so it is current the moment |
| 153 | we push. If you want to be sure you are reading today's version of a skill, use it. |
| 154 | |
| 155 | |
| 156 | |
| 157 | ## Start here: stop chatting, start batching |
| 158 | |
| 159 | The single highest-leverage thing you can do with FLORA's MCP server is **stop treating |
| 160 | it as a chatbot and start treating it as a pipeline.** |
| 161 | |
| 162 | One request at a time, waiting for each, is the default an agent falls into and it is |
| 163 | the slowest possible use of the server. FLORA runs generations concurrently. The |
| 164 | serialisation is entirely on the agent's side. |
| 165 | |
| 166 | Measured on a real six-item batch: fired together, **15.8 seconds**. The same six run |
| 167 | one after another: about **150 seconds**. Identical cost, identical outputs, one |
| 168 | tenth the wall clock — and the gap widens linearly with the size of your list. |
| 169 | |
| 170 | > **[`flora-batch-generate`] is the flagship skill |
| 171 | > in this repo.** If you read one thing here, read that. It turns a product list, a set |
| 172 | > of campaign variants, a folder of source images, or a spreadsheet into one parallel |
| 173 | > batch, polls it correctly, and tells you exactly what failed and why. |
| 174 | |
| 175 | |
| 176 | |
| 177 | ## Skills by use case |
| 178 | |
| 179 | ### Scale — many items, one treatment |
| 180 | |
| 181 | | Skill | Use it when | |
| 182 | | ------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| 183 | | **[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.** | |
| 184 | |
| 185 | ### Refine — get one thing right, without burning money |
| 186 | |
| 187 | | Skill | Use it when | |
| 188 | | ------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| 189 | | **[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. | |
| 190 | |
| 191 | ### Composite — animate what already exists |
| 192 | |
| 193 | | Skill | Use it when | |
| 194 | | ---------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| 195 | | **[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. | |
| 196 | |
| 197 | ### Sequence — script to moving pictures |
| 198 | |
| 199 | | Skill | Use it when | |
| 200 | | ------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| 201 | | **[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. | |
| 202 | |
| 203 | ### Transform — you already have the image |
| 204 | |
| 205 | | Skill | Use it when | |
| 206 | | -------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | |
| 207 | | **[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. | |
| 208 | |
| 209 | ### Reformat — one asset, every placement |
| 210 | |
| 211 | | Skill | Use it when | |
| 212 | | ------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| 213 | | **[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. | |
| 214 | | **[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. | |
| 215 | |
| 216 | ### Present — turn finished work into a deliverable |
| 217 | |
| 218 | | Skill | Use it when | |
| 219 | | ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| 220 | | **[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. | |
| 221 | | **[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. | |
| 222 | |
| 223 | ### Ship — all the way to the ad platform |
| 224 | |
| 225 | | Skill | Use it when | |
| 226 | | ---------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| 227 | | **[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. | |
| 228 | |
| 229 | ### Watch — keep a team plugged in |
| 230 | |
| 231 | | Skill | Use it when | |
| 232 | | ---------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| 233 | | **[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. | |
| 234 | |
| 235 | ### Check — judge it before it ships |
| 236 | |
| 237 | | Skill | Use it when | |
| 238 | | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| 239 | | **[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. | |
| 240 | |
| 241 | ### Iterate — build on what exists |
| 242 | |
| 243 | | Skill | Use it when | |
| 244 | | ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | |
| 245 | | **[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. | |
| 246 | | **[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. | |
| 247 | |
| 248 | ★ = flagship, most heavily tested. |
| 249 | |
| 250 | |
| 251 | |
| 252 | ## Try it |
| 253 | |
| 254 | Copy one of these. Skills fire on what you ask for, not on being named — you should |
| 255 | never have to type a skill's name. |
| 256 | |
| 257 | ### flora-batch-generate |
| 258 | |
| 259 | > Here are 24 products from our spring catalogue. Generate a PDP shot for each one — |
| 260 | > same studio setup on every product, seamless warm-grey, soft key from camera left. |
| 261 | > Total the cost before you spend anything. |
| 262 | |
| 263 | > Take this campaign line and give me 12 localised versions, one per market, same art |
| 264 | > direction throughout. Markets are in the attached sheet. |
| 265 | |
| 266 | > I have a folder of 40 product URLs. One hero image each, consistent lighting. Tell me |
| 267 | > what it'll cost first. |
| 268 | |
| 269 | ### flora-refine-loop |
| 270 | |
| 271 | > Generate a single white ceramic mug on a plain black surface. Handle pointing right, |
| 272 | > top-down bird's-eye view looking straight down, no other objects. Keep refining until |
| 273 | > it matches — max 3 rounds. |
| 274 | |
| 275 | > That's not quite right, try again. |
| 276 | > |
| 277 | > _(The skill should refuse to re-roll blind and ask what "right" means. If it just |
| 278 | > regenerates, the skill didn't fire — that's the bug to look for.)_ |
| 279 | |
| 280 | > A photo of a clock face showing exactly 4:37. Refine until the hands are correct. |
| 281 | > |
| 282 | > _(Models are bad at clock hands. Correct behaviour is stopping once the same defect |
| 283 | > survives a real prompt change, and handing you options — not burning more rounds.)_ |
| 284 | |
| 285 | ### flora-script-to-video |
| 286 | |
| 287 | > Turn this script into a video. Same character and lighting across every shot. |
| 288 | > |
| 289 | > ``` |
| 290 | > INT. DINER — NIGHT. Rain on the window. A woman sits alone with a coffee. |
| 291 | > She checks her watch. The door opens. She looks up. |
| 292 | > ``` |
| 293 | |
| 294 | > Storyboard this scene and animate it — 6 shots, 5 seconds each, 16:9. Show me the |
| 295 | > keyframes before you spend anything on video. |
| 296 | |
| 297 | > Here's a 30-second ad script and our brand character sheet. Build the keyframes off |
| 298 | > that reference, then animate. Quote the video stage separately. |
| 299 | |
| 300 | ### flora-mockup-deck |
| 301 | |
| 302 | > Mock this poster up out of home — I want to see it on a wall, a bus shelter, that |
| 303 | > kind of thing. Plus social sizes. |
| 304 | |
| 305 | > What would this campaign key visual look like in the wild? Square-on shots, and don't |
| 306 | > touch the artwork. |
| 307 | |
| 308 | > Give me a placement deck for this ad, with 1:1, 4:5 and 9:16 resizes for social. |
| 309 | |
| 310 | > Create a campaign deck of a flower. |
| 311 | > |
| 312 | > _(No artwork attached, so the skill writes the poster first — one generation — shows |
| 313 | > it to you, and only places it once you say yes. Four wrong placements is the failure |
| 314 | > it is avoiding, and they are not re-rollable.)_ |
| 315 | |
| 316 | ### flora-brand-ad-pipeline |
| 317 | |
| 318 | > Here's the strawberry launch — six SKUs, our usual treatment. Get them staged for me |
| 319 | > to review. |
| 320 | |
| 321 | > Build the ad set for the new store opening: generate, archive, host, and leave the |
| 322 | > Meta creatives paused. |
| 323 | |
| 324 | > Re-run the summer campaign — two of the ads didn't make it into Meta last time. |
| 325 | > |
| 326 | > _(The manifest is the point: a re-run should repair the two missing rows, not |
| 327 | > regenerate and re-upload all of them.)_ |
| 328 | |
| 329 | ### flora-pdp-deck |
| 330 | |
| 331 | > Here's a photo of our candle. I need PDP shots for the product page, and a deck |
| 332 | > at the end. |
| 333 | |
| 334 | > Product shot and a full-length model frame attached. Shoot it on her, studio |
| 335 | > background, and de-brand it. |
| 336 | |
| 337 | > I've only got this one product photo. What can you actually get me from it? |
| 338 | > |
| 339 | > _(The skill should say plainly that one photo buys one plate, not four — asking |
| 340 | > a single reference for four angles returns four near-duplicates and bills for |
| 341 | > all of them. If it promises a full multi-angle set, that's the bug.)_ |
| 342 | |
| 343 | ### flora-run-technique |
| 344 | |
| 345 | > Put this product on a clean white background. |
| 346 | |
| 347 | > Match the lighting in this shot to the reference image. |
| 348 | |
| 349 | > What can FLORA actually do to an image I already have? |
| 350 | |
| 351 | ### flora-canvas-iterate |
| 352 | |
| 353 | > What's in my Meridian project? |
| 354 | |
| 355 | > Pull up the hero images I made last week and redo them warmer — less blue in the |
| 356 | > shadows. |
| 357 | |
| 358 | > Show me what I've generated in this project and what it cost. |
| 359 | |
| 360 | |
| 361 | |
| 362 | ## What a good skill looks like here |
| 363 | |
| 364 | The bar is set by `flora-batch-generate` and `flora-mockup-deck`. Both share a shape, |
| 365 | and it is not "a description of the tools": |
| 366 | |
| 367 | **A law.** One sentence naming the invariant the skill exists to protect. |
| 368 | _"N items is one wait, not N waits."_ _"A re-run with an unchanged prompt is not a |
| 369 | refinement."_ If you cannot write that sentence, the skill is not ready. |
| 370 | **Measured numbers.** `265ms`, `3.45x`, `17% undercount`, `limit: 100`. Not "fast", |
| 371 | not "expensive", not "usually works". |
| 372 | **Named gotchas.** The specific thing that silently ate someone's budget, written |
| 373 | down with what it looked like when it happened. The most valuable content in this |
| 374 | repo is the failure someone already paid for. |
| 375 | **What it does _not_ do.** Where the skill stops, stated plainly, so an agent does |
| 376 | not improvise past its tested edge. |
| 377 | |
| 378 | Thin wrappers around tool descriptions are not useful — agents can already read tool |
| 379 | schemas. The value is the judgment that only comes from running it. |
| 380 | |
| 381 | |
| 382 | |
| 383 | ## Contributing |
| 384 | |
| 385 | **Some of the best FLORA workflows are already being built by users, independently of |
| 386 | us.** Two we know of: |
| 387 | |
| 388 | **Pedro Padilla's agentic marketing pipeline** — an end-to-end campaign flow driven |
| 389 | through the MCP server rather than the canvas. |
| 390 | **Will Bovill's Figma + FLORA storyboard workflow** — pulling frames from Figma, |
| 391 | generating against them, and assembling the result back into a board. |
| 392 | |
| 393 | Neither started as a feature request. Both are the kind of thing this repo exists to |
| 394 | surface, so that the next person does not have to rediscover it. |
| 395 | |
| 396 | If you have built a workflow that works, **[send it back]**. The bar |
| 397 | is the four bullets above. Open an issue describing the workflow or correction; a |
| 398 | maintainer will review it and include accepted changes in a future update. |
| 399 | |
| 400 | |
| 401 | |
| 402 | ## Reference |
| 403 | |
| 404 | **FLORA MCP endpoint** — `https://agents.flora.ai/mcp` (streamable HTTP, OAuth) |
| 405 | **Workflow instructions** — `flora_discover_skills` lists available skills; pass a |
| 406 | skill name to load its instructions. |
| 407 | **API and SDK docs** — [docs.flora.ai]. |
| 408 | **Calling FLORA from a skill** — use the named tools: `flora_create_generations`, |
| 409 | `flora_list_generations`, `flora_run_technique`, `flora_list_models` and friends. |
| 410 | Create 1–20 generations with `{ "generations": [...] }`, including a one-item array for |
| 411 | a single generation. Retain successful run IDs and poll with `{ "run_ids": [...] }`; |
| 412 | include `technique_id` for technique runs. Omit run IDs only to list history. Never |
| 413 | retry a whole batch because one submission failed. The hosted server no longer has an |
| 414 | `execute` code tool; `flora_list_tools` lists what the connection offers. |
| 415 | |
| 416 | ### Connection reference |
| 417 | |
| 418 | Check the connected server's advertised tool list and schemas before running a workflow. |
| 419 | The examples target the plural hosted generation tools; older cached catalogs need refreshing. |
| 420 | |
| 421 | |
| 422 | endpoint https://agents.flora.ai/mcp (streamable HTTP, Clerk OAuth) |
| 423 | API base https://app.flora.ai/api/v1 |
| 424 | SDK methods generations.create · generations.list · generations.retrieve |
| 425 | models.list · projects.create · assets.create |
| 426 | techniques.runs.create · techniques.runs.retrieve |
| 427 | |
| 428 | |
| 429 | Two things that do **not** exist and are easy to reach for: `models.retrieve` (use |
| 430 | `models.list().find()`) and `runs.action` (use the `flora_run_action` tool). |
| 431 | |
| 432 | FLORA also ships an in-browser MCP surface (WebMCP) that operates a live canvas |
| 433 | directly. It has a **different, larger tool vocabulary** — `flora_run_batch`, |
| 434 | `flora_get_batch_status`, `flora_get_generations`, `flora_edit_layers` and others — and |
| 435 | some skills explicitly distinguish that path. If you are writing a skill against the browser surface, |
| 436 | check its tool names separately; they are not interchangeable with the hosted server's. |
| 437 | |
| 438 | ## Data and privacy |
| 439 | |
| 440 | This plugin is Markdown skills plus a reference to FLORA's hosted MCP server. It has no |
| 441 | hooks, no background processes and no telemetry of its own. |
| 442 | |
| 443 | **What goes to FLORA.** When Claude calls a FLORA tool, the plugin sends what that |
| 444 | call needs to `https://agents.flora.ai/mcp`: prompts, reference images and files you |
| 445 | provide, model and technique choices, and project or canvas content you ask it to |
| 446 | read or change. You sign in with your own FLORA account over OAuth; nothing is sent |
| 447 | until you connect. Generations run against your FLORA account and bill its usage, |
| 448 | and results are stored in your FLORA workspace and served from `media.flora.ai`. |
| 449 | **What stays local.** `flora-motion-compositor` includes one readable Python script, |
| 450 | `scripts/comp.py`, that renders frames on your machine with ffmpeg and, for SVG |
| 451 | input, headless Chrome. It makes no network calls. The deck skills render HTML and |
| 452 | PDFs locally with headless Chrome in the same way. |
| 453 | **Other services, only when you ask.** A few skills describe steps in tools you |
| 454 | already use — fetching trend sources you name (`flora-trend-board`), posting boards |
| 455 | to a team channel, or leaving paused ads in Meta Ads Manager |
| 456 | (`flora-brand-ad-pipeline`). Those steps run through connectors or credentials you set |
| 457 | up yourself; the plugin ships none. |
| 458 | |
| 459 | FLORA's [Privacy Notice] and |
| 460 | [Terms of Service] apply to data sent to FLORA. |
| 461 | Questions: [open an issue] or |
| 462 | email [email protected]. |
| 463 | |
| 464 | ## Licence |
| 465 | |
| 466 | MIT. See [LICENSE]. |
| 467 |
Discussion
Alternatives
Browse more free AI agents or everything in Development.