{"id":56021,"plugin_id":"plugin_asdk_app_6ada7bec545881919206a8cf89db59f8","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-10-26T18:06:27.874Z","digest":"dce3e5ba0f9f5c93e15f2d25b61d167a46561e39fb906b9313b110de7a322d1a","against":null,"payload":{"description":"Recurring Moda work — scheduled posts, weekly reports, sync jobs: connect Moda to the scheduler you already run; nothing here runs on a timer, and the artifact itself routes to its format skill. Use for: \"every week/day…\", \"auto-post X\", \"keep this updated\".","included_files":[],"name":"moda-automate","skill_md_contents":"---\nname: moda-automate\ndescription: >-\n  Recurring Moda work — scheduled posts, weekly reports, sync jobs: connect\n  Moda to the scheduler you already run; nothing here runs on a timer, and the\n  artifact itself routes to its format skill. Use for: \"every week/day…\",\n  \"auto-post X\", \"keep this updated\".\n---\n\n# moda-automate\n\n**PREREQUISITE — `load_skill(\"moda-core\")` once per session** (step-0, write\ncontract, free/metered map). Already loaded? Skip ahead. If you cannot load\nit, the non-negotiables: call `moda_bootstrap` before anything; `brand_list`\nbefore creating; revision-guarded writes use `expected_revision` from your last read.\n`canvas_edit_image` captures its own target state and has no revision argument.\nOn `stale_revision`, re-read and retry once; send the canvas link\nthe moment it exists; stuck or failed? `ask_expert(\"<question>\")` — free and\nfast, never guess.\n\n## What this surface can and cannot do\n\n- Moda hosts no scheduler, and this conversation is stateless: nothing here\n  keeps running after it ends. **Never say you have scheduled something** — no\n  tool on this surface installs a job, and a promised run that never happens is\n  the worst failure this skill can produce.\n- What CAN happen here: build the artifact once, prove it, and hand over the\n  exact repeatable recipe plus the two real ways to run it on a cadence.\n- **Moda produces; the scheduler delivers.** Nothing in Moda posts to a social\n  platform or sends mail. Each run leaves a canvas link and an export — the\n  publishing step belongs to whatever is running the schedule.\n- **The artifact still routes to its format skill.** This skill owns the\n  cadence conversation; the social, document, chart and video skills own what\n  each run actually builds.\n\n## The useful half, in order\n\n1. Build it ONCE, now, with its format skill. A proven run beats a scheduled\n   guess, and the user gets something today either way.\n2. Hand over the recipe as concrete steps with the real ids in them — the\n   canvas, the brand kit, the folder, the template — not a description of a\n   workflow.\n3. Name the two lanes honestly, and let the user pick:\n   - a machine that runs Moda's command-line tool on a timer (cron, a task\n     scheduler, a repository's scheduled job), which is the lane with a\n     filesystem and unattended credentials;\n   - the automation platform the user already runs, calling Moda's API on a\n     schedule.\n4. State what each run will cost: canvas authoring, reads, screenshots and\n   exports are free; only generation lanes meter, and they quote for free\n   first.\n\n## Three shapes cover almost everything\n\n| Shape | Each run | Why it wins |\n|---|---|---|\n| Refresh one canvas (the weekly report) | `canvas_read` the pinned canvas → `canvas_edit` → `export` | the link never changes, so anyone watching it just sees the update |\n| New artifact per run (the weekly post set) | `canvas_create(template_canvas_id=…)` → author → `export` | the team template keeps every week on the approved layout |\n| Sync job | pull the source data → author → `export` | Moda never reaches into your systems; the fetch belongs to the caller |\n\nWhichever shape it is, load the format skill for the authoring half — this\nskill does not teach how to build the artifact.\n\n## Discipline the recurring run has to carry\n\n- One canvas, serial writes: they serialize on the server anyway, so a parallel\n  batch buys nothing and can come back `canvas_busy`.\n- Every write carries `expected_revision` from the last read; `stale_revision`\n  heals on a re-read and one retry.\n- An identical repeated generation REPLAYS its result rather than charging\n  twice — a retry with the same inputs is safe, a reworded prompt is a new\n  charge. Never \"retry\" by nudging the wording.\n- Every run should leave a trace: what it built, the canvas link, and the\n  failure if there was one. An unattended run that reports nothing is\n  indistinguishable from one that never ran.\n\n## Examples\n\n- \"post our metrics chart to Slack every Monday\" → build the chart now (the\n  chart skill), hand over the weekly recipe, and say plainly that the Slack\n  step is the scheduler's, not Moda's.\n- \"keep the launch one-pager up to date\" → refresh-one-canvas shape; the\n  document skill owns the page, and the live link is what stays current.\n- \"a fresh set of posts every week\" → new-artifact shape off a team template\n  (`load_skill(\"moda-templates\")`); the platform's social skill owns the\n  creative.\n\n## Errors\n\nAny typed error → `load_skill(\"moda-core\")` and read its recovery reference.\n`ask_expert` is free when a cadence question is really a capability question.\n\nSee also: moda-core — the contract, recovery, everything Moda can do.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}