{"id":13683,"plugin_id":"plugin_asdk_app_6a8c516c7e308191a0091f1b9c98a621","kind":"skill","collection_source":null,"comparison_source":null,"observed_at":"2026-09-30T23:07:56.513Z","digest":"74612867ac93438bd1fac2125539ee7fea47bd2e40f79757f560576a0e294c4e","against":null,"payload":{"name":"flora-run-technique","description":"Run a saved FLORA technique — a multi-step visual workflow such as background swap, relighting, upscale, model swap, or sketch-to-render. Use when the user names a technique, asks to transform an image they already have (\"put this on a clean background\", \"match this lighting\", \"upscale this\", \"make this look photographed\"), or asks what FLORA can do. Do not use for a plain text-to-image request with no source image, and do not use to inspect existing project work.","included_files":[{"relative_path":"agents/openai.yaml","size_in_bytes":399}],"skill_md_contents":"---\nname: flora-run-technique\ndescription: Run a saved FLORA technique — a multi-step visual workflow such as background swap, relighting, upscale, model swap, or sketch-to-render. Use when the user names a technique, asks to transform an image they already have (\"put this on a clean background\", \"match this lighting\", \"upscale this\", \"make this look photographed\"), or asks what FLORA can do. Do not use for a plain text-to-image request with no source image, and do not use to inspect existing project work.\n---\n\n# Run a FLORA technique\n\nA technique is a saved workflow that chains several models. It is the thing FLORA\ndoes that a single image model cannot: the steps, prompts, and model choices are\nfixed by whoever authored it, so the same technique gives the same treatment every\ntime.\n\n**Input:** the user's intent, plus any source image.\n**Output:** the technique's output URLs, the charged cost, and the project the run\nlanded in.\n\n## Steps\n\n1. **Resolve the workspace.** Call `flora_list_workspaces`. If there is more than\n   one, ask which to bill before spending anything.\n\n2. **Find the technique.** Call `flora_list_techniques` and match on the user's\n   intent. It returns `run_cost` and a summary of inputs for each. If nothing fits,\n   say so and offer `flora_generate` instead — do not force an unrelated technique.\n\n3. **Get the exact input ids.** Call `flora_get_technique`. Its declared input ids\n   are the keys `flora_run_technique` expects. Never guess them from the name.\n\n4. **Get each image input to an HTTPS URL** (see Image inputs below).\n\n5. **Run it.** Call `flora_run_technique` with `workspace_id`, `technique_id`, and\n   an `inputs` object keyed by those ids. Omit optional text inputs entirely when\n   the user gave no direction — an empty string is rejected, not treated as absent.\n\n6. **Poll and report.** Poll `flora_get_run` until status is `completed` or\n   `failed`. Report the output URL, the charged cost, and a link to the project.\n\n## Image inputs\n\nFLORA fetches images server-side from an HTTPS URL. **Files the user attaches in\nChatGPT already have one** — they are hosted on `files.openai.com` or\n`cdn.openai.com`, both allowlisted. Pass that URL straight to\n`flora_create_asset` as `source`, or into the technique input directly.\n\nNever base64-encode a file or try to upload bytes. If the image genuinely has no\nURL, say that this environment cannot upload it and point the user at their FLORA\nproject to add it there.\n\n## Rules\n\n- **State the cost before running.** `run_cost` comes back from\n  `flora_list_techniques`. Techniques range from free to several dollars per run.\n- **You cannot see the output.** Runs return URLs, not pixels. Describe what was\n  produced from the technique and the inputs; never claim to have looked at it.\n- **On `input_validation_error`,** re-read `flora_get_technique`, rebuild `inputs`\n  from what it returns, and retry once. Do not retry other failures — retries bill.\n- **On insufficient credits,** surface the message and stop.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}