Flora MCP skills agent

Flora-mcp-skills

by florafauna-ai·MIT license·★ 8 Stars on the repo·GitHub ↗

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/main1 file
README.md
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:

  1. Copy https://agents.flora.ai/mcp
  2. Go to Settings → Connectors → Add custom connector (direct link)
  3. 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-generate is 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_skills lists 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_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.
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 from media.flora.ai.
  • What stays local. 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.
  • 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 
3Workflows for pointing your agent at [FLORA](https://flora.ai) and getting real work
4back — not just tool access.
5 
6FLORA's MCP server gives any agent the ability to generate images, video, audio and
7text, run saved multi-step techniques, and read and write a FLORA canvas. That is the
8raw capability. **This repo is the judgment layer**: when to use which model, what the
9gotchas are, what a good result looks like, and what to do when one comes back wrong.
10 
11Skills document tested workflows and measured observations. Model behavior and tool
12availability can change; check the connected server before following an example.
13 
14FLORA maintains these skills and publishes updates here through reviewed pull requests.
15 
16---
17 
18## Install
19 
20One command. FLORA's MCP server is hosted, authenticated over OAuth, and needs no API
21key — the first call opens a browser to sign in.
22 
23**Claude Code**
24 
25```bash
26claude mcp add --transport http flora https://agents.flora.ai/mcp
27```
28 
29**Codex**
30 
31```bash
32codex 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```json
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 
501. Copy `https://agents.flora.ai/mcp`
512. Go to **Settings → Connectors → Add custom connector**
52 ([direct link](https://claude.ai/settings/connectors?modal=add-custom-connector))
533. 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 
59The 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
62marketplace, so installing it wires up the MCP server _and_ every skill:
63 
64```bash
65claude plugin marketplace add florafauna-ai/flora-mcp-skills
66claude plugin install flora-mcp-skills@flora
67```
68 
69**Any other agent — copy the skills in:**
70 
71```bash
72git clone https://github.com/florafauna-ai/flora-mcp-skills.git
73cp -r flora-mcp-skills/skills/* .codex/skills/ # Codex
74cp -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
78Claude 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
81instructions**, and paste in the contents of the skill you want — for example
82[`skills/flora-batch-generate/SKILL.md`](skills/flora-batch-generate/SKILL.md). Every
83chat inside that Project then has it, with nothing to re-paste. This is the most
84reliable option and it costs nothing.
85 
86_Upload it as a Skill, for something reusable across Projects._ Claude.ai takes a
87zipped skill folder, and this repo's layout is already the right shape — one directory
88per skill with a `SKILL.md` inside it. Zip the one you want:
89 
90```bash
91git clone https://github.com/florafauna-ai/flora-mcp-skills.git
92cd flora-mcp-skills/skills && zip -r flora-batch-generate.zip flora-batch-generate
93```
94 
95Then upload it from Claude's settings, under skills/capabilities. Zipping from the repo
96rather 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
99and works in a normal chat.
100 
101**Or no install at all** — point your agent straight at one skill:
102 
103```
104Read https://raw.githubusercontent.com/florafauna-ai/flora-mcp-skills/main/skills/flora-batch-generate/SKILL.md
105and 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 
113One consistent studio style across all five: seamless warm-grey backdrop,
114soft softbox from camera left, subtle contact shadow, 85mm, centred, no props.
115```
116 
117### Keeping the skills up to date
118 
119New skills get added to this repo, and existing ones get corrected as we measure things
120that turn out to be wrong. **None of that reaches you on its own.** An installed plugin
121is a frozen snapshot — it will not tell you a new skill exists, and it will keep working
122happily 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
125untouched:
126 
127```bash
128claude plugin marketplace update flora
129claude plugin update flora-mcp-skills
130```
131 
132The first refreshes this repo's marketplace listing; the second pulls the new version.
133Skipping the first means the second has nothing new to find. **Changes apply on your
134next session** — plugins load at start-up, so restart your agent afterwards.
135 
136If 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
140overwrite:
141 
142```bash
143cd flora-mcp-skills && git pull
144cp -r skills/* .codex/skills/ # Codex
145cp -r skills/* .cursor/rules/ # Cursor
146```
147 
148**Claude.ai — re-paste or re-zip.** A Project's custom instructions and an uploaded
149Skill are both snapshots taken when you added them. Paste the current `SKILL.md` in
150again, 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
153we 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 
159The single highest-leverage thing you can do with FLORA's MCP server is **stop treating
160it as a chatbot and start treating it as a pipeline.**
161 
162One request at a time, waiting for each, is the default an agent falls into and it is
163the slowest possible use of the server. FLORA runs generations concurrently. The
164serialisation is entirely on the agent's side.
165 
166Measured on a real six-item batch: fired together, **15.8 seconds**. The same six run
167one after another: about **150 seconds**. Identical cost, identical outputs, one
168tenth the wall clock — and the gap widens linearly with the size of your list.
169 
170> **[`flora-batch-generate`](skills/flora-batch-generate/SKILL.md) 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](skills/flora-batch-generate/SKILL.md)** ★ | 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](skills/flora-refine-loop/SKILL.md)** ★ | 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](skills/flora-motion-compositor/SKILL.md)** | 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](skills/flora-script-to-video/SKILL.md)** | 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](skills/flora-run-technique/SKILL.md)** | 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](skills/flora-video-resize/SKILL.md)** | 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](skills/flora-image-resize/SKILL.md)** | 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](skills/flora-mockup-deck/SKILL.md)** | 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](skills/flora-pdp-deck/SKILL.md)** | 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](skills/flora-brand-ad-pipeline/SKILL.md)** | 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](skills/flora-trend-board/SKILL.md)** | 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](skills/flora-brand-consistency-audit/SKILL.md)** | 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](skills/flora-canvas-iterate/SKILL.md)** | 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](skills/flora-open-project/SKILL.md)** | 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 
254Copy one of these. Skills fire on what you ask for, not on being named — you should
255never 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 
364The bar is set by `flora-batch-generate` and `flora-mockup-deck`. Both share a shape,
365and 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 
378Thin wrappers around tool descriptions are not useful — agents can already read tool
379schemas. 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
386us.** 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 
393Neither started as a feature request. Both are the kind of thing this repo exists to
394surface, so that the next person does not have to rediscover it.
395 
396If you have built a workflow that works, **[send it back](CONTRIBUTING.md)**. The bar
397is the four bullets above. Open an issue describing the workflow or correction; a
398maintainer 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](https://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 
418Check the connected server's advertised tool list and schemas before running a workflow.
419The examples target the plural hosted generation tools; older cached catalogs need refreshing.
420 
421```
422endpoint https://agents.flora.ai/mcp (streamable HTTP, Clerk OAuth)
423API base https://app.flora.ai/api/v1
424SDK methods generations.create · generations.list · generations.retrieve
425 models.list · projects.create · assets.create
426 techniques.runs.create · techniques.runs.retrieve
427```
428 
429Two 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 
432FLORA also ships an in-browser MCP surface (WebMCP) that operates a live canvas
433directly. It has a **different, larger tool vocabulary** — `flora_run_batch`,
434`flora_get_batch_status`, `flora_get_generations`, `flora_edit_layers` and others — and
435some skills explicitly distinguish that path. If you are writing a skill against the browser surface,
436check its tool names separately; they are not interchangeable with the hosted server's.
437 
438## Data and privacy
439 
440This plugin is Markdown skills plus a reference to FLORA's hosted MCP server. It has no
441hooks, 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 
459FLORA's [Privacy Notice](https://flora.ai/legal/privacy-notice) and
460[Terms of Service](https://flora.ai/legal/terms-of-service) apply to data sent to FLORA.
461Questions: [open an issue](https://github.com/florafauna-ai/flora-mcp-skills/issues) or
462email [email protected].
463 
464## Licence
465 
466MIT. See [LICENSE](LICENSE).
467 

Discussion

Alternatives