{"id":13681,"plugin_id":"plugin_asdk_app_6a8c516c7e308191a0091f1b9c98a621","kind":"skill","collection_source":null,"comparison_source":null,"observed_at":"2026-09-30T23:07:56.467Z","digest":"3c1edcb9b64fac8a46896f114e4969d2fa8f925f10f6b9196fd19eb336d8b07d","against":null,"payload":{"description":"Find and build on work that already exists in a FLORA project — inspect a canvas, review past generations and what they cost, and regenerate specific assets with new direction applied. Use when the user refers to a named project, \"my canvas\", or earlier work (\"the hero images from last week\", \"what's in the Meridian project\"). Do not use to start new work in an empty project.","included_files":[{"relative_path":"agents/openai.yaml","size_in_bytes":414}],"name":"flora-canvas-iterate","skill_md_contents":"---\nname: flora-canvas-iterate\ndescription: Find and build on work that already exists in a FLORA project — inspect a canvas, review past generations and what they cost, and regenerate specific assets with new direction applied. Use when the user refers to a named project, \"my canvas\", or earlier work (\"the hero images from last week\", \"what's in the Meridian project\"). Do not use to start new work in an empty project.\n---\n\n# Iterate on existing FLORA work\n\nA FLORA project outlives the conversation. Its canvas, every generation, and the\ncost of each are all still there, so revision starts from what exists rather than\nfrom a blank prompt.\n\n**Input:** a project reference and the change wanted.\n**Output:** what is on the canvas today, plus any regenerated assets.\n\n## Steps\n\n1. **Find the project.** `flora_list_projects` (most recently active first) and\n   match on the user's wording. Never create a project when the user named an\n   existing one — ask if the name is ambiguous.\n\n2. **Read what is there.** `flora_get_canvas` for structure and how nodes connect;\n   `flora_list_canvas_nodes` for the media nodes and their asset URLs. Use\n   `flora_list_generations` to see what was made, with cost and status.\n\n3. **Identify the assets the user means.** Name them back before changing anything.\n   \"Two hero images, both generated Tuesday\" is confirmable; \"the ones you meant\"\n   is not.\n\n4. **Apply the change.** Regenerate with `flora_generate`, or re-run the original\n   technique with `flora_run_technique` when the asset came from one —\n   `flora_list_technique_runs` shows which technique produced what.\n\n5. **Report** the new outputs, their cost, and where they landed on the canvas.\n\n## Rules\n\n- **Read before writing.** The user may have edited the canvas between turns.\n- **Additive only.** Regenerating adds new nodes; it does not replace the\n  originals. Say so, so the user knows the earlier version is still there.\n- **Confirm before spending.** State the cost of the regeneration and wait.\n- **You cannot see any asset.** You have URLs, node labels, and generation\n  metadata. Reason from those; never claim to have looked at the artwork.\n- Prefer the narrowest read that answers the question. A whole-canvas dump on a\n  large project is mostly noise.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}