{"id":56028,"plugin_id":"plugin_asdk_app_6ada7bec545881919206a8cf89db59f8","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-10-26T18:06:28.076Z","digest":"f95a980e9ff8fa4f4f06613ea4181cf85ced1429e121bd7fe2e0ecd240242ae8","against":null,"payload":{"description":"A deck's visual theme, designed with you before any content exists: four title directions, section heads and a closing, then eight workhorse layouts — placeholder only, approved phase by phase.","included_files":[{"relative_path":"references/brand.md","size_in_bytes":15284},{"relative_path":"references/charts.md","size_in_bytes":5659},{"relative_path":"references/deck-design.md","size_in_bytes":4101},{"relative_path":"references/design-quality.md","size_in_bytes":22265},{"relative_path":"references/edit-code.md","size_in_bytes":16488},{"relative_path":"references/gotchas.md","size_in_bytes":8693},{"relative_path":"references/markup.md","size_in_bytes":23958},{"relative_path":"references/no-brand-design.md","size_in_bytes":14257},{"relative_path":"references/omni-and-media.md","size_in_bytes":7338}],"name":"moda-deck-theme","skill_md_contents":"---\nname: moda-deck-theme\ndescription: >-\n  A deck's visual theme, designed with you before any content exists: four\n  title directions, section heads and a closing, then eight workhorse layouts\n  — placeholder only, approved phase by phase.\n---\n\n# moda-deck-theme\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 is\n\nA wizard-style flow for establishing a deck's visual theme *with* the user before any real content exists. Runs on a blank 1920×1080 slides canvas — with a brand kit bound when one is in play — and ends with twelve placeholder slides that define a complete visual system. If the canvas already has designed slides, or the user wants specific content designed right now, say so and ask how they want to proceed.\n\nFive phases, each gated on explicit approval. **Do not generate the next phase without it** — \"what's next?\" or \"let's move on\" is the gate. Anything the user said in their opening prompt supersedes the defaults below; acknowledge it so they know you read it.\n\nSet up, then open by setting expectations in a sentence or two — four title directions, then section heads and a closing, then the workhorse layouts, pausing at each step, all content placeholder — and go straight into Phase 1:\n\n1. `brand_list`, then `canvas_create(name='[Deck] theme', intent='a slide theme: 4 title directions, ceremonial slides, 8 workhorse layouts', width=1920, height=1080, category='slides', brand_kit_id='[KIT]')`.\n2. `canvas_share(canvas_ref)` — send the link at once: \"follow along live here.\"\n3. A kit is bound → LOOK at its assets before designing anything (references/brand.md). No kit → read references/no-brand-design.md first. Either way, compute the type ladder from references/design-quality.md (1920×1080 → body ≈ 40px, floor 18px).\n\n**No kit means the theme IS the identity** — never that you design plain.\n`brand_list` comes back empty, or the user declines one, so step 1 runs\nwithout naming a kit. Read the binding the create reports back rather than\nassuming it came out empty — a bound kit IS a kit, so design to it or unbind\n(`canvas_update(brand_kit_id=…)`), and say which you did. Genuinely unbound, the\nwizard invents: a palette with two color worlds, distinctive faces, a motif,\nall chosen for this deck's subject (references/no-brand-design.md). Phase 1's\nfour directions become four genuinely different *identities*, and Phase 3's\ncontract is what locks the chosen one in. A generic blue-and-gray theme is a\nfailed run, not a neutral one.\n\n## Phase 1 — Title slide, 4 variants\n\n`canvas_edit(canvas_ref, code)` with three `create('page', …)` ops, then one `canvas_apply_markup(canvas_ref, page, markup)` per variant: four title slides, each a genuinely different aesthetic axis. With a kit, all four use its real colors, type and logo — the variants explore *design language*, not brand attributes. Without one, each variant brings its own invented palette and type pairing, so the pick settles the identity as well as the language. Pick four from: type-led/anthemic · image-led · editorial · compositional/off-grid · minimalist/reductive · color-shock/block · maximalist/layered · geometric/constructivist · tactile/hand-made · technical/diagrammatic. With directional hints from the user, pick four that fit the direction; without hints, span clearly different territory — one type-driven, one image-driven, one color/composition-driven, one wildcard — and vary your picks across sessions.\n\nName each page with a letter and its approach (\"A — Anthemic\") so the user can reference them; page names are set in the edit lane (`update(pageId, { name: 'A — Anthemic' })`, references/edit-code.md). `canvas_screenshot(canvas_ref)` and LOOK before presenting. Present them as a choice, noting that only one moves forward and the other three get deleted, so this is the moment to choose.\n\n- **Picks one** → make any requested edits, then **delete the other three** (`canvas_delete(canvas_ref, ids=[PAGE_IDS])`) before proceeding. The clean canvas signals the lock-in.\n- **Wants a hybrid** (\"type from A, layout from C\") → build a fifth variant, delete the rest.\n- **None work** → ask one question — which axis was wrong (typography, layout, color, imagery)? — then generate a fresh four from the remaining approaches. **Never iterate on rejected variants.**\n\n> Unsure which axes a second round should use? `ask_expert(\"which aesthetic axes should the second round of slide title variants use after the first four were rejected?\")`.\n\n## Phase 2 — Ceremonial slides\n\n`canvas_edit(canvas_ref, code)` with three more `create('page', …)` ops — three slides that set the deck's emotional register, all visibly siblings of the title (same type pairings, color logic, grid):\n\n1. **Section head, punchy** — a moment. Large type, strong color, for major breaks.\n2. **Section head, quiet** — restrained, more whitespace, for subsections. The pair is what gives the deck rhythm instead of every break landing the same.\n3. **Closing / thank you** — mirrors the title's energy with a sense of arrival, often the title's composition with one clear shift (inverted color, mirrored alignment).\n\nScreenshot all three, present them together, and iterate until approved.\n\n## Phase 3 — Theme contract\n\nWrite the locked system out in plain prose to the user (not a slide, no approval needed — it's a status update): type scale (which font for display vs body, exact sizes, caps/weight rules), color roles (which kit color — or, with no kit, which invented hex — is background, accent, type, data emphasis), layout pattern (grid, alignment, margins, whether off-grid is in play), image treatment, and logo behavior (no kit and no mark from the user → none; never invent one). Close with: every workhorse slide will adhere to this — now's the moment to adjust. **Without this contract Phase 4 drifts**; it's the connective tissue and the thing specific feedback points back to.\n\n## Phase 4 — Workhorse slides\n\nEight layouts, generated **2–3 at a time** with a feedback pause between batches so drift gets caught before it compounds: big number / stat hero · two-column comparison · quote / testimonial · 3-up grid · full-bleed image with caption · text-content slide · timeline / process flow · data slide. One `canvas_apply_markup` apply per slide, `canvas_screenshot` after each batch, and LOOK. Every one must visibly inherit the theme contract; if a slide could belong to a different deck, redo it before moving on.\n\nThe text-content slide especially: **do not default to bullet lists.** Carry the 3–5 points with typographic hierarchy, color emphasis, or a numbered sequence.\n\n## Phase 5 — Handoff\n\nSummarize the twelve slides — title, two section-head styles, closing, eight workhorse layouts — point back to the live link, and offer the two natural next moves: apply the theme to real content, or refine a specific slide. Export only on the user's format words or one accepted offer: `export(canvas_ref, format='pptx'|'pdf')`.\n\n## Throughout\n\n- **Placeholder content only.** Never invent specific facts, real-sounding metrics, named people or company claims. \"Section title here\", \"Key insight\", \"47%\", \"Discover / Build / Launch\". Real-looking content invites the user to mistake it for a real claim.\n- **One or two sentences of design rationale** per phase (\"all-caps because your display font has strong caps\"). Enough to make feedback precise, not an explanation of the design.\n- **Vague feedback gets exactly one question** — which axis — then proceed.\n- **Iterate refines the direction; pivot abandons it.** On a pivot, don't anchor to the previous attempt.\n- A targeted fix to an approved slide is a small `canvas_edit` code batch (references/edit-code.md); a whole-slide rebuild is `canvas_apply_markup(mode='replace_page_nodes')`.\n\n## Errors\n\n`invalid_markup` names the element it skipped — one page per apply, then re-run. `stale_revision` heals: re-read and retry once. Anything else → load moda-core and read its recovery reference.\n\nSee also: moda-deck — the full deck build once a theme exists ·\nmoda-core — the contract, recovery, everything Moda can do.\n\n## References\n\n| Doc | Load when |\n|---|---|\n| references/deck-design.md | before Phase 1 — concept-first covers, the layout bar |\n| references/markup.md | before any markup apply |\n| references/design-quality.md | the type ladder, imagery, shaders, the AI-slop list |\n| references/brand.md | a kit is bound — look at its assets, not just its tokens |\n| references/no-brand-design.md | no kit is active — inventing the identity: palette law, type, imagery, layout system |\n| references/edit-code.md | page names; targeted edits to an approved slide |\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}