← MаkeCONTENT HISTORY

Update to Mаke

Snapshot Sep 30, 2026 · 23:12 UTC · version 1.1.0

Collection source: not recorded for this historical snapshot.

WHAT CHANGED · RULE-BASED ANALYSIS

First saved snapshot

No earlier snapshot is available to establish a change.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "Use when creating a new Make scenario or editing an existing one — finding modules, connections and account-dependent values, wiring the flow, saving through scenario_create or scenario_patch. Not for explaining, running or debugging a scenario, or for API-call shells.",
  "included_files": [
    {
      "relative_path": "examples/README.md",
      "size_in_bytes": 1278
    },
    {
      "relative_path": "examples/ai-agent-with-tool.json",
      "size_in_bytes": 1841
    },
    {
      "relative_path": "examples/error-handler.json",
      "size_in_bytes": 1542
    },
    {
      "relative_path": "examples/if-else-merge.json",
      "size_in_bytes": 2058
    },
    {
      "relative_path": "examples/iterator-aggregator.json",
      "size_in_bytes": 1819
    },
    {
      "relative_path": "examples/on-demand-subscenario.json",
      "size_in_bytes": 1352
    },
    {
      "relative_path": "examples/polling-sheets-ai-update-row.json",
      "size_in_bytes": 2117
    },
    {
      "relative_path": "examples/router-fanout.json",
      "size_in_bytes": 2020
    },
    {
      "relative_path": "examples/webhook-to-google-sheets.json",
      "size_in_bytes": 1074
    },
    {
      "relative_path": "references/ai-agents.md",
      "size_in_bytes": 4209
    },
    {
      "relative_path": "references/app-gotchas.md",
      "size_in_bytes": 2756
    },
    {
      "relative_path": "references/error-handling.md",
      "size_in_bytes": 4131
    },
    {
      "relative_path": "references/flow-control.md",
      "size_in_bytes": 7156
    },
    {
      "relative_path": "references/iml-functions.md",
      "size_in_bytes": 4081
    },
    {
      "relative_path": "references/mapping.md",
      "size_in_bytes": 3581
    },
    {
      "relative_path": "references/subscenarios.md",
      "size_in_bytes": 3565
    }
  ],
  "name": "make-scenario-building",
  "skill_md_contents": "---\nname: make-scenario-building\ndescription: Use when creating a new Make scenario or editing an existing one — finding modules, connections and account-dependent values, wiring the flow, saving through scenario_create or scenario_patch. Not for explaining, running or debugging a scenario, or for API-call shells.\nmetadata:\n  version: \"0.1.7\" # x-release-please-version\n---\n\n# Make scenarios — creating and editing\n\nThe tool descriptions carry each tool's rules; this skill carries the order of operations and the decisions\nthe tools cannot make. A straight-line scenario needs nothing beyond the workflow below. Load a reference only\nwhen its trigger applies.\n\n**Ground rules.** A 403 means the whole connection must be re-authorized with every permission — never one\ntool. A `content` remark on a result is an instruction, not decoration. `scenario_create`/`scenario_patch`\nmake one save each: put everything one change needs in one call, and read a refused write's `errors` as a\nfree dry run. Say what you resolved an ambiguous value to (\"the Sales channel\", \"next Monday\") *before* the\ncall that acts on it. Details and the refusal contract: `make-scenario-reference`, when something is refused.\n\n## Build a new scenario\n\n1. Pin the design in words the user agrees with: every app by name (ask when they name a category — \"email\",\n   \"a form\", \"AI\"), what starts it, what moves where, what happens to non-matching items.\n2. `environment_get` → `organizationId`/`teamId`.\n3. `app_find` with the user's words, once per goal. Given an instant and a polling trigger for the same\n   source, say which you chose and why.\n4. `module_spec` for every planned module in one call, `schemas: true` — it gives each module's exact\n   `config` shape and its `dynamic` paths.\n5. Connections: reuse an id from `connection.existing`; otherwise one `connection_create` for every app,\n   hand over the link, `connection_get` when the user says they are done.\n6. `module_field_resolve` every `dynamic` path in `dependsOn` order, copying `value` into `config`. A polling\n   trigger's start point is the `/data` path — ask \"existing items or from now?\" before resolving it.\n7. Compose the flat list: your ids, one `root: \"main\"`, everything else `follows` or `parent`, one `config`\n   per module, `filter` for a plain continue-or-stop gate. Google Sheets, Gmail, Make AI Tools or date math\n   involved → [App gotchas](./references/app-gotchas.md) first.\n8. `scenario_create`, `autoActivate` off unless asked. Fix everything in `errors` and resubmit; relay\n   `warnings`.\n9. Verify, then `scenario_activate`. On-demand: `scenario_run` with `inputs`. Polling/scheduled: activate,\n   `scenario_run`, `scenario_execution_get`. Webhook: the *user* sends one real request — `scenario_run`\n   does not exercise a webhook. Then give `https://<zone>.make.com/<teamId>/scenarios/<scenarioId>`.\n\n## Edit an existing scenario\n\n1. `scenario_get` for structure and `lastEdit`; `scenario_module_get` (`config: true`) only for the modules\n   you will change.\n2. Adding modules: `app_find` and `module_spec(schemas: true)` as above; resolve `dynamic` paths against the\n   module's current `config`.\n3. One `scenario_patch` with `expectedLastEdit` and every operation the change needs. Send only the `config`\n   domains you changed. Fix every `{{<id>.field}}` reference a removed or moved module leaves dangling in the\n   same call.\n4. A module added in a call gets its id on save, so wiring onto it is a second call with the returned\n   `lastEdit`. Verify from the response's `modules` echo.\n\n## A webhook whose payload is unknown\n\n`payloadShape: \"learned\"` in `module_spec`, or a bare `gateway:CustomWebHook`: create with the trigger alone →\nthe user sends one real request (or `scenario_trigger_learn` first) → `scenario_trigger_inspect` →\n`scenario_patch` the rest. Do not activate a webhook scenario whose fields nobody has seen.\n\n## Decisions the tools leave to you\n\n- **Filter vs if-else vs router.** Skip non-matching items and nothing else → `filter`. Non-matching items\n  need their own action → `builtin:BasicIfElse` (+ `builtin:BasicMerge` to rejoin). Several arms that may all\n  fire → `builtin:BasicRouter`.\n- **Do not over-build.** No error handlers, aggregators or variables unless the design needs them.\n\n## References — load only on the trigger\n\n| Trigger | Reference |\n|---|---|\n| Mapping a trigger's or on-demand input, a whole bundle or an array element; a mapped field came back empty | [Mapping](./references/mapping.md) |\n| A value must be transformed (dates, text, arrays, conditionals) | [IML functions](./references/iml-functions.md) |\n| More than a straight line: routers, if-else + merge, multi-condition filters, iterating, aggregating | [Flow control](./references/flow-control.md) |\n| The scenario is on-demand, calls another scenario, or is called by one or by an agent | [Subscenarios](./references/subscenarios.md) |\n| Placing a Make AI Agent module with tools | [AI agents](./references/ai-agents.md) |\n| The user asks for retries or fallbacks, or failure/data loss is unacceptable — most scenarios need none | [Error handling](./references/error-handling.md) |\n| Finalizing a Google Sheets, Gmail or Make AI Tools config, or a date expression | [App gotchas](./references/app-gotchas.md) |\n| A complete `scenario_create` call to pattern from | [Examples](./examples/README.md) |\n"
}

SHA-256 of public snapshot: abf82729ecee3aceea40ac29122012d54dbfcfec441984a532117df1b44f9e13