[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-webflow-webflow-mcpcloud-apps":3,"mdc-byrx5m-key":37,"related-org-webflow-webflow-mcpcloud-apps":2021,"related-repo-webflow-webflow-mcpcloud-apps":2209},{"slug":4,"name":5,"fn":6,"description":7,"org":8,"tags":12,"stars":24,"repoUrl":25,"updatedAt":26,"license":27,"forks":28,"topics":29,"repo":32,"sourceUrl":35,"mdContent":36},"webflow-mcpcloud-apps","webflow-mcp:cloud-apps","manage Webflow Cloud apps via GitHub","Create GitHub-source Webflow Cloud apps and monitor, troubleshoot, or manage existing apps through Webflow MCP. Use when creating a standalone or site-attached app from GitHub; identifying apps or environments; checking public URLs, domains, configuration keys, or deployed versions; diagnosing failures; changing a GitHub source, branch, or mount; provisioning environments; or previewing a deployment, retry, or rollback. Do not use for Designer\u002FCSS variables, CLI\u002Flocal-source app creation or deployment, or passing environment-variable values through MCP.",{"slug":9,"name":10,"logoUrl":11,"githubOrg":9},"webflow","Webflow","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fwebflow.png",[13,17,20,23],{"name":14,"slug":15,"type":16},"GitHub","github","tag",{"name":18,"slug":19,"type":16},"MCP","mcp",{"name":21,"slug":22,"type":16},"Cloud","cloud",{"name":10,"slug":9,"type":16},107,"https:\u002F\u002Fgithub.com\u002Fwebflow\u002Fwebflow-skills","2026-09-01T08:30:23.498716",null,17,[30,31],"agent","skills",{"repoUrl":25,"stars":24,"forks":28,"topics":33,"description":34},[30,31],"Official Webflow Agent Skills","https:\u002F\u002Fgithub.com\u002Fwebflow\u002Fwebflow-skills\u002Ftree\u002FHEAD\u002Fplugins\u002Fwebflow-skills\u002Fskills\u002Fcloud-apps","---\nname: webflow-mcp:cloud-apps\ndescription: Create GitHub-source Webflow Cloud apps and monitor, troubleshoot, or manage existing apps through Webflow MCP. Use when creating a standalone or site-attached app from GitHub; identifying apps or environments; checking public URLs, domains, configuration keys, or deployed versions; diagnosing failures; changing a GitHub source, branch, or mount; provisioning environments; or previewing a deployment, retry, or rollback. Do not use for Designer\u002FCSS variables, CLI\u002Flocal-source app creation or deployment, or passing environment-variable values through MCP.\n---\n\n# Webflow Cloud Apps\n\nUse `data_apps_tool` to create GitHub-source apps, answer operational questions,\nand manage environments for Webflow Cloud apps. Start from the user's outcome,\ngather only the evidence needed, and distinguish observations from conclusions.\n\nUse the `webflow-cli:cloud` skill when the task requires CLI\u002Flocal-source app\ncreation or deployment, or creating or updating environment variables.\nClient-side build output is not sent to Webflow and cannot be recovered through\nMCP.\n\n## Instructions\n\n### 1. Establish scope\n\n1. Call `webflow_guide_tool` before any other Webflow MCP tool. The live guide\n   and action schemas are authoritative for current arguments and responses.\n2. Use Webflow MCP tools for Webflow operations except the explicit CLI handoff\n   for environment-variable values. Never call Webflow APIs directly.\n3. Include the required `context` parameter in every tool call. Write 15-25\n   words in third-person perspective.\n4. Route by the capability the task requires:\n   - Use `data_apps_tool` to create GitHub-source apps; inspect apps,\n     environments, domains, deployment records, logs, and variable metadata;\n     manage GitHub sources and environments; and enqueue GitHub deployments.\n   - Use `data_variable_tool` for Designer color, size, font, and CSS variables.\n   - Use `webflow-cli:cloud` for CLI\u002Flocal-source apps, local builds and\n     deployments, or creating and updating environment-variable values.\n5. If `data_apps_tool` is unavailable, report that the Cloud Apps MCP\n   capability is not enabled. Do not bypass it with a direct API request.\n\nNever ask the user to paste an environment-variable value or secret into chat.\nFor a create or update, delegate to `webflow-cli:cloud` and require a hidden\nprompt, stdin, or protected file. Never pass a secret as a positional argument.\n\n### 2. Resolve the target\n\nDiscover identifiers in this order:\n\n```text\nlist_apps -> app_id\nlist_environments(app_id) -> env_id\nlist_deployments(app_id, env_id) -> deployment_id\n```\n\nApp names are unique only within a site, so resolve a named app with\n`site_id + name`. If multiple resources match, present distinguishing metadata\nand require the user to select one before any mutation. Use the live guide for\nfilter, pagination, cursor, and action-batching mechanics.\n\n### 3. Follow the matching user story\n\n#### Create a GitHub-source app\n\n1. Establish the app name, canonical GitHub repository URL, branch, optional\n   description, and whether it is standalone or attached to an existing site.\n2. For a site-attached app, resolve the site ID. Omit `site_id` for standalone.\n3. Apply the mount contract before previewing:\n   - A standalone app always mounts at `\u002F`; omit `mount` or use `\u002F`.\n   - A site-attached app defaults to `\u002Fapp`, rejects `\u002F`, and requires a valid\n     non-root mount when overriding the default.\n4. Explain that standalone creation requires a workspace-scoped user token.\n   Webflow derives the GitHub installation and validates repository access; do\n   not request an installation ID.\n5. Call `create_app` with its default dry run. Show the repository, branch,\n   attachment, site when applicable, mount, and initial-deployment attempt.\n6. Require `confirm`. Immediately after confirmation and before execution,\n   record the start time and generate one stable `idempotency_key`; execute with\n   `dry_run: false`, then record the completion time. Reuse that key only for\n   exact retries of this creation.\n7. Treat creation and initial deployment as separate outcomes. A returned app\n   means creation succeeded even if `deployStatus` is `skipped` or `failed`.\n   For `triggered`, inspect the environment and deployment; for `skipped`, check\n   the branch or push a commit; for `failed`, preserve the app and inspect or\n   retry deployment separately.\n8. If the app or outcome is unreadable, reconcile before retrying:\n   - For a site-attached app, collect candidates with `site_id + name`; for a\n     standalone app, collect candidates by name.\n   - In both cases, compare each candidate's name, `sourceUrl`, and `createdAt`\n     with the requested repository and recorded execution window.\n   - Continue to environments and deployments only when exactly one candidate\n     matches. Do not retry while the created app remains ambiguous.\n9. Never delete a created app automatically because deployment failed. Do not\n   treat an initial deployment dashboard link as the environment's public URL.\n\n#### Which app and environment am I looking at?\n\n1. Use `list_apps` to find the app and `get_app` for its metadata, including\n   `sourceUrl` and `siteAttached`.\n2. Use `list_environments` to report the branch, mount, `publicUrl`, and latest\n   deployment status. If `publicUrl` is null, report that no user-facing\n   environment address is available; do not construct one.\n3. Use `get_app_domains` when the user asks where the app is reachable.\n4. Explain that custom-domain results exclude the default `*.webflow.io`\n   hostname. Domains for an app attached to a regular Webflow site may belong\n   to the parent site and be shared by sibling apps.\n\n#### What is deployed, and is it healthy?\n\n1. Use `list_environments` for the environment's latest deployment status.\n2. Use `list_deployments`, newest first, then `get_deployment` for the selected\n   deployment's detailed timeline and version metadata.\n3. Treat `starting`, `building`, and `deploying` as active states. Report any\n   other status exactly rather than guessing its meaning.\n4. A failed phase sets `buildFailedAt` or `deployFailedAt` while its matching\n   finished timestamp remains null. A null finished timestamp by itself does\n   not prove the phase is still running.\n5. Report what is observable: selected app and environment, deployment status,\n   version or commit metadata if returned, phase timestamps, and evidence gaps.\n\n#### Why did the deployment fail?\n\n1. Fetch the deployment with `get_deployment` and identify the failed phase\n   from its status and timestamps.\n2. Call `get_build_logs` only when `logsAvailable` is true. Start with a narrow\n   `since` window or `q` filter, then broaden only if needed.\n3. Page until `nextCursor` is null when a complete result is required.\n4. Treat `logsAvailable` as a retention and retrieval signal, not proof that\n   every phase produced log entries.\n5. Treat an empty result as \"no matching retrievable server-side logs,\" not as\n   proof that the build succeeded or produced no errors.\n6. Build output produced on a user's machine is outside MCP. Mention this only\n   when the user says the deployment was built with the CLI; direct them to the\n   originating CLI output for local build failures.\n7. Report the failed phase, relevant timestamps, the smallest useful evidence,\n   the inferred cause, and any uncertainty. Do not merely restate raw logs.\n\n#### Why is the running app failing?\n\n1. Resolve the exact environment and call `get_runtime_logs`.\n2. Narrow by `since` and `q` before retrieving a broad window. Page completely\n   when the conclusion depends on absence.\n3. Runtime logs may be unavailable because of retention. Treat an empty result\n   as no retrievable logs and report the limitation.\n4. Correlate runtime evidence with the latest deployment record when useful,\n   but do not claim causation from timing alone.\n5. Report the observed error pattern, affected interval, likely cause, evidence,\n   and limitations.\n\n#### Is required configuration present?\n\n1. Establish the required key set from an authoritative source: a user-provided\n   key list, a project configuration schema or documented requirement, or a\n   reference environment the user explicitly designates as complete.\n2. If the source is a protected file containing values, run deterministic\n   key-only extraction locally and emit only key names. Never open the source\n   through a model-visible read or include its values in chat or tool output.\n3. Obtain an authoritative secrecy designation for every required key from the\n   user, a project schema or documented requirement, or a reference environment\n   explicitly designated as authoritative for secrecy. An `.env` file or plain\n   key list establishes names only; never infer secrecy from key names.\n4. Resolve the environment, call `list_variables`, and compare its keys and\n   secrecy metadata with the established requirements. It proves what is\n   configured, not what is required. Exhaust pagination before concluding that\n   a key is missing.\n5. Report keys and metadata only. Secret entries have `isSecret: true` and no\n   value; a missing secret value is expected.\n6. If the required set or any secrecy designation is unresolved, stop before a\n   CLI mutation or dependent deployment unless the user explicitly establishes\n   that no configuration is required.\n7. For missing or misclassified keys, route to `webflow-cli:cloud` without\n   requesting values in chat. After the write, verify required keys and secrecy\n   with `list_variables`. If it partially fails, report failed keys without\n   values and stop before deployment; preserve successful keys and the\n   environment.\n\n#### Why is this environment serving the wrong branch or route?\n\n1. Resolve the exact environment and report its current branch, mount,\n   `publicUrl`, and latest deployment status. Report a null `publicUrl` without\n   constructing an address.\n2. Compare the current branch and mount with the user's intended mapping. If\n   the request is only diagnostic, stop after reporting the mismatch.\n3. If the correction changes the mount, call `get_app` and use `siteAttached`:\n   `\u002F` is valid only when false; a site-attached app requires a non-root mount.\n   Do not infer attachment from `siteId`.\n4. For a correction, show the exact before-and-after mapping. Explain that\n   `update_environment` is immediate, has no dry run, and does not deploy code.\n5. Require `confirm`, call `update_environment` once, and report the returned\n   environment, `publicUrl`, and `mountRefreshStatus`.\n6. For an unreadable or uncertain result, locate the original `env_id`. If using\n   the expected new branch as a filter, accept a returned environment only when\n   its ID equals that original `env_id`, then compare its branch and mount with\n   the requested values. A different ID or no uniquely matched original target\n   is ambiguous: do not continue or retry. Never reuse the old branch filter\n   after a branch-changing update.\n7. A failed or unknown mount refresh does not mean the environment update was\n   rolled back. Report routing as uncertain and do not retry solely because the\n   refresh failed.\n8. If the branch changed and the user wants its code deployed, treat\n   `trigger_deployment` as a separate previewed and confirmed mutation.\n\n#### Create an isolated environment for a branch and deploy it\n\n1. Resolve the existing app, call `get_app`, and validate the proposed mount\n   with `siteAttached` before previewing the mutation.\n2. Page through `list_environments` to check whether the requested branch or\n   mount is already in use.\n3. Show the proposed branch and mount. Explain that `create_environment` is\n   immediate, has no dry run, and creates a mapping without deploying code.\n4. Generate one stable `idempotency_key`, require `confirm`, and call\n   `create_environment`. Reuse that key only for exact retries.\n5. Report the returned environment, `publicUrl`, and `mountRefreshStatus`. If the\n   result is uncertain, search for the expected branch and compare the\n   environment ID, branch, and mount; use a returned ID to distinguish concurrent\n   creations. Do not retry while the created environment remains ambiguous.\n6. A failed refresh means creation succeeded but routing may be incomplete. Do\n   not retry creation or delete the environment automatically.\n7. Before deploying this new environment, follow \"Is required configuration\n   present?\" as a mandatory gate. Continue only after requirements and secrecy\n   are verified, or the user explicitly establishes that none are required.\n   Then use the deployment workflow below for preview, confirmation,\n   attribution, and monitoring.\n\n#### Can this deployment be retried, rolled back, or rebuilt from branch HEAD?\n\nUse the mutation's default dry run as the capability check. Do not infer\neligibility from missing logs, app metadata, or deployment metadata.\n\nFor a new deployment from the connected branch or a prior exact commit:\n\n1. Resolve the environment. For a retry or rollback, also resolve the exact\n   prior deployment.\n2. Perform configuration discovery only when the user requests it, deployment\n   evidence indicates missing or misclassified variables, the selected commit\n   has documented configuration requirements, or the server rejects the\n   deployment for configuration reasons. Follow \"Is required configuration\n   present?\" when one of these conditions applies. If a preview or execution\n   rejection creates the condition, resolve it before retrying. Otherwise add\n   no configuration prerequisite.\n3. Preview `trigger_deployment` for branch HEAD or `redeploy` for a prior commit.\n   If preview rejects the source, make no mutation and route local-source\n   deployment to `webflow-cli:cloud`.\n4. For `redeploy`, explain that the older commit runs with the environment's\n   current configuration, so compatibility is not guaranteed.\n5. Show the returned branch or commit and explain that execution creates a new\n   GitHub build, not a deployment of local files.\n6. Require `confirm`. Immediately after confirmation, record the newest\n   deployment as the correlation baseline, then execute with `dry_run: false`\n   and one stable `idempotency_key`. Reuse the key only for exact retries of this\n   request.\n7. Interpret the execution result before monitoring:\n   - `queued`: this call enqueued a deployment.\n   - `skipped` from `trigger_deployment`: the branch has no commit, so no\n     deployment was enqueued.\n   - `processing`: an earlier call with this key is already in flight; this call\n     did not enqueue a duplicate.\n   - An unknown or unreadable status leaves the outcome uncertain.\n8. The action returns no deployment ID. For `queued` or an existing in-flight\n   request, poll `list_deployments` and `get_deployment` for a record appearing\n   above the baseline captured before the first execution attempt. If that\n   baseline is unavailable, report that attribution may be ambiguous. Do not\n   assume the newest record belongs to this request when deployments are\n   concurrent.\n9. Stop when the attributed deployment leaves an active state or the bounded\n   monitoring period ends. If monitoring ends first, report the last status and\n   timestamp; do not call it failed or enqueue a replacement for that reason.\n10. For a retry or rollback, preview the prior deployment's exact commit hash\n    and message. A rollback creates a new build at that commit; it does not move\n    the environment branch.\n\n### 4. Apply shared evidence and safety rules\n\n- Treat build, deploy, and runtime logs as potentially sensitive customer\n  output. Inspect for tokens, credentials, cookies, authorization headers, and\n  presigned URLs before quoting or saving them.\n- Quote only the minimum log evidence needed. Redact sensitive values and URLs.\n- A request to inspect, diagnose, or preview does not authorize a mutation.\n- Require an itemized preview and the exact word `confirm` before every\n  mutation.\n- Reconcile an uncertain mutation through observable state before retrying it.\n- Reuse an idempotency key only for exact retries of the same logical request.\n- Never delete a newly created app or environment automatically when\n  configuration or deployment fails. Report the partial state.\n\n### 5. Handle explicit administrative requests\n\nThese operations are supported but are not the skill's primary workflow.\n\nFor `update_app`:\n\n1. Fetch the current app with `get_app`.\n2. For a name or description change, prepare and show the exact change. Pass\n   `description: null` to clear a description.\n3. For `source_url`, compare the current `sourceUrl` with the requested canonical\n   GitHub repository URL. Explain that the immediate update requires a\n   user-authorized token; machine tokens return `403`.\n4. Require `confirm`, call `update_app` once, and verify with `get_app`. An\n   unreadable response requires reconciliation before retrying.\n5. A source update does not change an environment branch or deploy code. Treat\n   those as separate confirmed mutations.\n6. Renaming a standalone app also attempts to rename its backing site; a sync\n   failure can leave the old site name. Site-attached parent names are unchanged.\n\nFor `delete_variable`:\n\n1. Preview with the default dry run.\n2. If `exists` is false, report that nothing was deleted and stop.\n3. If `exists` is true, show the app, environment, and key; warn that deletion\n   is permanent and require `confirm`.\n4. Call once with `dry_run: false`. Treat `deleted: true` as success. Reconcile\n   an uncertain response with an exact key lookup before retrying.\n\nFor `delete_environment`:\n\n1. Preview with the default dry run. Identify the app, environment, branch, and\n   mount, and explain that its worker, KV\u002FD1\u002FR2 storage, deployments, and\n   variables will be permanently removed.\n2. Explain that deletion is irreversible and is rejected for the app's last\n   environment. Require `confirm`.\n3. Call once with `dry_run: false`. Treat `deleted: true` as success.\n4. A failed or null `mountRefreshStatus` means deletion succeeded but routing\n   cleanup is failed or uncertain. Report it and never retry the delete.\n5. For an uncertain response, page until the original `env_id` is found or the\n   listing ends. Do not use a branch filter whose value may have changed.\n\nFor `delete_app`:\n\n1. Preview with the default dry run and report `deletionMode`.\n2. Explain that `archive` unpublishes the app and removes it from the dashboard,\n   while `hard_delete` permanently deletes the app and all its environments and\n   cannot be undone.\n3. Require `confirm`, then call once with `dry_run: false`.\n4. Treat `deleted: true` as success. Reconcile uncertainty with `get_app` or the\n   app's exact site-and-name lookup before retrying.\n\n### 6. Handle errors and report\n\n- Duplicate environment branch or mount: report the conflicting environment;\n  do not silently update or delete it.\n- Partial CLI variable write: report failed keys without values and stop before\n  deployment. Do not roll back successful keys or delete the environment.\n- `GITHUB_APP_NOT_INSTALLED` or `GITHUB_REPO_NOT_CONNECTED`: provide the returned\n  `installUrl` and retry only after the user completes the connection.\n- An unsupported deployment preview is a capability boundary, not a reason to\n  bypass MCP with a direct API call.\n\nFor each final-report field below, include it only when applicable: the selected\napp; a resolved environment; evidence inspected; observed status; supported\ncause; limitations; mutations performed; partial state; and, when blocked, the\nnext required user action.\n\n## Examples\n\n### Create a site-attached GitHub app\n\n**User:** \"Create `search-app` from `https:\u002F\u002Fgithub.com\u002Facme\u002Fsearch` on the\n`main` branch and attach it to my marketing site at `\u002Fsearch`.\"\n\nResolve the site, preview `create_app` with its site ID and non-root mount, and\nuse the GitHub-source creation workflow. Report creation separately from the\nautomatic initial-deployment outcome.\n\n### Diagnose a failed deployment\n\n**User:** \"Why did the latest production deployment fail?\"\n\nUse the deployment-diagnostics workflow for the latest production deployment.\nRetrieve logs only when available and report empty results as unavailable\nevidence, not success.\n\n### Correct an environment mapping\n\n**User:** \"Production is serving the preview branch at `\u002Fapp`. Point it back to\n`main` at `\u002F`.\"\n\nUse the environment-mapping workflow and validate `\u002F` against `siteAttached`.\nTreat a requested deployment as a separate mutation.\n\n### Provision, configure, and deploy a branch environment\n\n**User:** \"Create a `\u002Fpreview` environment for `feature\u002Fsearch` and deploy it.\nIt needs the variables in `.env.preview`.\"\n\nUse the new-environment workflow, then apply its mandatory configuration gate\nbefore routing to deployment. Preserve the environment if a later step fails.\n\n## Guidelines\n\n- Start from the user's operational question, not the action inventory.\n- Prefer observable evidence over assumptions about how an app was built.\n- Use mutation previews and returned errors as capability checks.\n- Use CLI for local-source apps and deployments, and for variable values.\n- Never use `data_apps_tool` for Designer variables.\n- Never expose secrets from variables, logs, errors, or URLs.\n- Never mutate without an exact preview and explicit `confirm`.\n- Never retry an uncertain mutation before reconciling observable state.\n- Keep repository, environment, configuration, and deployment changes separate.\n- Preserve partial resources unless the user explicitly requests deletion.\n",{"data":38,"body":39},{"name":5,"description":7},{"type":40,"children":41},"root",[42,51,66,79,86,93,184,196,202,207,219,232,238,245,470,476,565,571,658,664,754,760,808,814,890,896,1038,1044,1145,1151,1156,1161,1329,1335,1380,1386,1391,1403,1490,1501,1558,1569,1629,1640,1711,1717,1761,1766,1772,1778,1820,1832,1838,1847,1852,1858,1887,1906,1912,1944,1949,1955],{"type":43,"tag":44,"props":45,"children":47},"element","h1",{"id":46},"webflow-cloud-apps",[48],{"type":49,"value":50},"text","Webflow Cloud Apps",{"type":43,"tag":52,"props":53,"children":54},"p",{},[55,57,64],{"type":49,"value":56},"Use ",{"type":43,"tag":58,"props":59,"children":61},"code",{"className":60},[],[62],{"type":49,"value":63},"data_apps_tool",{"type":49,"value":65}," to create GitHub-source apps, answer operational questions,\nand manage environments for Webflow Cloud apps. Start from the user's outcome,\ngather only the evidence needed, and distinguish observations from conclusions.",{"type":43,"tag":52,"props":67,"children":68},{},[69,71,77],{"type":49,"value":70},"Use the ",{"type":43,"tag":58,"props":72,"children":74},{"className":73},[],[75],{"type":49,"value":76},"webflow-cli:cloud",{"type":49,"value":78}," skill when the task requires CLI\u002Flocal-source app\ncreation or deployment, or creating or updating environment variables.\nClient-side build output is not sent to Webflow and cannot be recovered through\nMCP.",{"type":43,"tag":80,"props":81,"children":83},"h2",{"id":82},"instructions",[84],{"type":49,"value":85},"Instructions",{"type":43,"tag":87,"props":88,"children":90},"h3",{"id":89},"_1-establish-scope",[91],{"type":49,"value":92},"1. Establish scope",{"type":43,"tag":94,"props":95,"children":96},"ol",{},[97,111,116,129,172],{"type":43,"tag":98,"props":99,"children":100},"li",{},[101,103,109],{"type":49,"value":102},"Call ",{"type":43,"tag":58,"props":104,"children":106},{"className":105},[],[107],{"type":49,"value":108},"webflow_guide_tool",{"type":49,"value":110}," before any other Webflow MCP tool. The live guide\nand action schemas are authoritative for current arguments and responses.",{"type":43,"tag":98,"props":112,"children":113},{},[114],{"type":49,"value":115},"Use Webflow MCP tools for Webflow operations except the explicit CLI handoff\nfor environment-variable values. Never call Webflow APIs directly.",{"type":43,"tag":98,"props":117,"children":118},{},[119,121,127],{"type":49,"value":120},"Include the required ",{"type":43,"tag":58,"props":122,"children":124},{"className":123},[],[125],{"type":49,"value":126},"context",{"type":49,"value":128}," parameter in every tool call. Write 15-25\nwords in third-person perspective.",{"type":43,"tag":98,"props":130,"children":131},{},[132,134],{"type":49,"value":133},"Route by the capability the task requires:\n",{"type":43,"tag":135,"props":136,"children":137},"ul",{},[138,149,161],{"type":43,"tag":98,"props":139,"children":140},{},[141,142,147],{"type":49,"value":56},{"type":43,"tag":58,"props":143,"children":145},{"className":144},[],[146],{"type":49,"value":63},{"type":49,"value":148}," to create GitHub-source apps; inspect apps,\nenvironments, domains, deployment records, logs, and variable metadata;\nmanage GitHub sources and environments; and enqueue GitHub deployments.",{"type":43,"tag":98,"props":150,"children":151},{},[152,153,159],{"type":49,"value":56},{"type":43,"tag":58,"props":154,"children":156},{"className":155},[],[157],{"type":49,"value":158},"data_variable_tool",{"type":49,"value":160}," for Designer color, size, font, and CSS variables.",{"type":43,"tag":98,"props":162,"children":163},{},[164,165,170],{"type":49,"value":56},{"type":43,"tag":58,"props":166,"children":168},{"className":167},[],[169],{"type":49,"value":76},{"type":49,"value":171}," for CLI\u002Flocal-source apps, local builds and\ndeployments, or creating and updating environment-variable values.",{"type":43,"tag":98,"props":173,"children":174},{},[175,177,182],{"type":49,"value":176},"If ",{"type":43,"tag":58,"props":178,"children":180},{"className":179},[],[181],{"type":49,"value":63},{"type":49,"value":183}," is unavailable, report that the Cloud Apps MCP\ncapability is not enabled. Do not bypass it with a direct API request.",{"type":43,"tag":52,"props":185,"children":186},{},[187,189,194],{"type":49,"value":188},"Never ask the user to paste an environment-variable value or secret into chat.\nFor a create or update, delegate to ",{"type":43,"tag":58,"props":190,"children":192},{"className":191},[],[193],{"type":49,"value":76},{"type":49,"value":195}," and require a hidden\nprompt, stdin, or protected file. Never pass a secret as a positional argument.",{"type":43,"tag":87,"props":197,"children":199},{"id":198},"_2-resolve-the-target",[200],{"type":49,"value":201},"2. Resolve the target",{"type":43,"tag":52,"props":203,"children":204},{},[205],{"type":49,"value":206},"Discover identifiers in this order:",{"type":43,"tag":208,"props":209,"children":214},"pre",{"className":210,"code":212,"language":49,"meta":213},[211],"language-text","list_apps -> app_id\nlist_environments(app_id) -> env_id\nlist_deployments(app_id, env_id) -> deployment_id\n","",[215],{"type":43,"tag":58,"props":216,"children":217},{"__ignoreMap":213},[218],{"type":49,"value":212},{"type":43,"tag":52,"props":220,"children":221},{},[222,224,230],{"type":49,"value":223},"App names are unique only within a site, so resolve a named app with\n",{"type":43,"tag":58,"props":225,"children":227},{"className":226},[],[228],{"type":49,"value":229},"site_id + name",{"type":49,"value":231},". If multiple resources match, present distinguishing metadata\nand require the user to select one before any mutation. Use the live guide for\nfilter, pagination, cursor, and action-batching mechanics.",{"type":43,"tag":87,"props":233,"children":235},{"id":234},"_3-follow-the-matching-user-story",[236],{"type":49,"value":237},"3. Follow the matching user story",{"type":43,"tag":239,"props":240,"children":242},"h4",{"id":241},"create-a-github-source-app",[243],{"type":49,"value":244},"Create a GitHub-source app",{"type":43,"tag":94,"props":246,"children":247},{},[248,253,266,322,327,339,368,419,465],{"type":43,"tag":98,"props":249,"children":250},{},[251],{"type":49,"value":252},"Establish the app name, canonical GitHub repository URL, branch, optional\ndescription, and whether it is standalone or attached to an existing site.",{"type":43,"tag":98,"props":254,"children":255},{},[256,258,264],{"type":49,"value":257},"For a site-attached app, resolve the site ID. Omit ",{"type":43,"tag":58,"props":259,"children":261},{"className":260},[],[262],{"type":49,"value":263},"site_id",{"type":49,"value":265}," for standalone.",{"type":43,"tag":98,"props":267,"children":268},{},[269,271],{"type":49,"value":270},"Apply the mount contract before previewing:\n",{"type":43,"tag":135,"props":272,"children":273},{},[274,302],{"type":43,"tag":98,"props":275,"children":276},{},[277,279,285,287,293,295,300],{"type":49,"value":278},"A standalone app always mounts at ",{"type":43,"tag":58,"props":280,"children":282},{"className":281},[],[283],{"type":49,"value":284},"\u002F",{"type":49,"value":286},"; omit ",{"type":43,"tag":58,"props":288,"children":290},{"className":289},[],[291],{"type":49,"value":292},"mount",{"type":49,"value":294}," or use ",{"type":43,"tag":58,"props":296,"children":298},{"className":297},[],[299],{"type":49,"value":284},{"type":49,"value":301},".",{"type":43,"tag":98,"props":303,"children":304},{},[305,307,313,315,320],{"type":49,"value":306},"A site-attached app defaults to ",{"type":43,"tag":58,"props":308,"children":310},{"className":309},[],[311],{"type":49,"value":312},"\u002Fapp",{"type":49,"value":314},", rejects ",{"type":43,"tag":58,"props":316,"children":318},{"className":317},[],[319],{"type":49,"value":284},{"type":49,"value":321},", and requires a valid\nnon-root mount when overriding the default.",{"type":43,"tag":98,"props":323,"children":324},{},[325],{"type":49,"value":326},"Explain that standalone creation requires a workspace-scoped user token.\nWebflow derives the GitHub installation and validates repository access; do\nnot request an installation ID.",{"type":43,"tag":98,"props":328,"children":329},{},[330,331,337],{"type":49,"value":102},{"type":43,"tag":58,"props":332,"children":334},{"className":333},[],[335],{"type":49,"value":336},"create_app",{"type":49,"value":338}," with its default dry run. Show the repository, branch,\nattachment, site when applicable, mount, and initial-deployment attempt.",{"type":43,"tag":98,"props":340,"children":341},{},[342,344,350,352,358,360,366],{"type":49,"value":343},"Require ",{"type":43,"tag":58,"props":345,"children":347},{"className":346},[],[348],{"type":49,"value":349},"confirm",{"type":49,"value":351},". Immediately after confirmation and before execution,\nrecord the start time and generate one stable ",{"type":43,"tag":58,"props":353,"children":355},{"className":354},[],[356],{"type":49,"value":357},"idempotency_key",{"type":49,"value":359},"; execute with\n",{"type":43,"tag":58,"props":361,"children":363},{"className":362},[],[364],{"type":49,"value":365},"dry_run: false",{"type":49,"value":367},", then record the completion time. Reuse that key only for\nexact retries of this creation.",{"type":43,"tag":98,"props":369,"children":370},{},[371,373,379,381,387,389,395,397,403,405,410,412,417],{"type":49,"value":372},"Treat creation and initial deployment as separate outcomes. A returned app\nmeans creation succeeded even if ",{"type":43,"tag":58,"props":374,"children":376},{"className":375},[],[377],{"type":49,"value":378},"deployStatus",{"type":49,"value":380}," is ",{"type":43,"tag":58,"props":382,"children":384},{"className":383},[],[385],{"type":49,"value":386},"skipped",{"type":49,"value":388}," or ",{"type":43,"tag":58,"props":390,"children":392},{"className":391},[],[393],{"type":49,"value":394},"failed",{"type":49,"value":396},".\nFor ",{"type":43,"tag":58,"props":398,"children":400},{"className":399},[],[401],{"type":49,"value":402},"triggered",{"type":49,"value":404},", inspect the environment and deployment; for ",{"type":43,"tag":58,"props":406,"children":408},{"className":407},[],[409],{"type":49,"value":386},{"type":49,"value":411},", check\nthe branch or push a commit; for ",{"type":43,"tag":58,"props":413,"children":415},{"className":414},[],[416],{"type":49,"value":394},{"type":49,"value":418},", preserve the app and inspect or\nretry deployment separately.",{"type":43,"tag":98,"props":420,"children":421},{},[422,424],{"type":49,"value":423},"If the app or outcome is unreadable, reconcile before retrying:\n",{"type":43,"tag":135,"props":425,"children":426},{},[427,439,460],{"type":43,"tag":98,"props":428,"children":429},{},[430,432,437],{"type":49,"value":431},"For a site-attached app, collect candidates with ",{"type":43,"tag":58,"props":433,"children":435},{"className":434},[],[436],{"type":49,"value":229},{"type":49,"value":438},"; for a\nstandalone app, collect candidates by name.",{"type":43,"tag":98,"props":440,"children":441},{},[442,444,450,452,458],{"type":49,"value":443},"In both cases, compare each candidate's name, ",{"type":43,"tag":58,"props":445,"children":447},{"className":446},[],[448],{"type":49,"value":449},"sourceUrl",{"type":49,"value":451},", and ",{"type":43,"tag":58,"props":453,"children":455},{"className":454},[],[456],{"type":49,"value":457},"createdAt",{"type":49,"value":459},"\nwith the requested repository and recorded execution window.",{"type":43,"tag":98,"props":461,"children":462},{},[463],{"type":49,"value":464},"Continue to environments and deployments only when exactly one candidate\nmatches. Do not retry while the created app remains ambiguous.",{"type":43,"tag":98,"props":466,"children":467},{},[468],{"type":49,"value":469},"Never delete a created app automatically because deployment failed. Do not\ntreat an initial deployment dashboard link as the environment's public URL.",{"type":43,"tag":239,"props":471,"children":473},{"id":472},"which-app-and-environment-am-i-looking-at",[474],{"type":49,"value":475},"Which app and environment am I looking at?",{"type":43,"tag":94,"props":477,"children":478},{},[479,513,540,552],{"type":43,"tag":98,"props":480,"children":481},{},[482,483,489,491,497,499,504,506,512],{"type":49,"value":56},{"type":43,"tag":58,"props":484,"children":486},{"className":485},[],[487],{"type":49,"value":488},"list_apps",{"type":49,"value":490}," to find the app and ",{"type":43,"tag":58,"props":492,"children":494},{"className":493},[],[495],{"type":49,"value":496},"get_app",{"type":49,"value":498}," for its metadata, including\n",{"type":43,"tag":58,"props":500,"children":502},{"className":501},[],[503],{"type":49,"value":449},{"type":49,"value":505}," and ",{"type":43,"tag":58,"props":507,"children":509},{"className":508},[],[510],{"type":49,"value":511},"siteAttached",{"type":49,"value":301},{"type":43,"tag":98,"props":514,"children":515},{},[516,517,523,525,531,533,538],{"type":49,"value":56},{"type":43,"tag":58,"props":518,"children":520},{"className":519},[],[521],{"type":49,"value":522},"list_environments",{"type":49,"value":524}," to report the branch, mount, ",{"type":43,"tag":58,"props":526,"children":528},{"className":527},[],[529],{"type":49,"value":530},"publicUrl",{"type":49,"value":532},", and latest\ndeployment status. If ",{"type":43,"tag":58,"props":534,"children":536},{"className":535},[],[537],{"type":49,"value":530},{"type":49,"value":539}," is null, report that no user-facing\nenvironment address is available; do not construct one.",{"type":43,"tag":98,"props":541,"children":542},{},[543,544,550],{"type":49,"value":56},{"type":43,"tag":58,"props":545,"children":547},{"className":546},[],[548],{"type":49,"value":549},"get_app_domains",{"type":49,"value":551}," when the user asks where the app is reachable.",{"type":43,"tag":98,"props":553,"children":554},{},[555,557,563],{"type":49,"value":556},"Explain that custom-domain results exclude the default ",{"type":43,"tag":58,"props":558,"children":560},{"className":559},[],[561],{"type":49,"value":562},"*.webflow.io",{"type":49,"value":564},"\nhostname. Domains for an app attached to a regular Webflow site may belong\nto the parent site and be shared by sibling apps.",{"type":43,"tag":239,"props":566,"children":568},{"id":567},"what-is-deployed-and-is-it-healthy",[569],{"type":49,"value":570},"What is deployed, and is it healthy?",{"type":43,"tag":94,"props":572,"children":573},{},[574,585,605,633,653],{"type":43,"tag":98,"props":575,"children":576},{},[577,578,583],{"type":49,"value":56},{"type":43,"tag":58,"props":579,"children":581},{"className":580},[],[582],{"type":49,"value":522},{"type":49,"value":584}," for the environment's latest deployment status.",{"type":43,"tag":98,"props":586,"children":587},{},[588,589,595,597,603],{"type":49,"value":56},{"type":43,"tag":58,"props":590,"children":592},{"className":591},[],[593],{"type":49,"value":594},"list_deployments",{"type":49,"value":596},", newest first, then ",{"type":43,"tag":58,"props":598,"children":600},{"className":599},[],[601],{"type":49,"value":602},"get_deployment",{"type":49,"value":604}," for the selected\ndeployment's detailed timeline and version metadata.",{"type":43,"tag":98,"props":606,"children":607},{},[608,610,616,618,624,625,631],{"type":49,"value":609},"Treat ",{"type":43,"tag":58,"props":611,"children":613},{"className":612},[],[614],{"type":49,"value":615},"starting",{"type":49,"value":617},", ",{"type":43,"tag":58,"props":619,"children":621},{"className":620},[],[622],{"type":49,"value":623},"building",{"type":49,"value":451},{"type":43,"tag":58,"props":626,"children":628},{"className":627},[],[629],{"type":49,"value":630},"deploying",{"type":49,"value":632}," as active states. Report any\nother status exactly rather than guessing its meaning.",{"type":43,"tag":98,"props":634,"children":635},{},[636,638,644,645,651],{"type":49,"value":637},"A failed phase sets ",{"type":43,"tag":58,"props":639,"children":641},{"className":640},[],[642],{"type":49,"value":643},"buildFailedAt",{"type":49,"value":388},{"type":43,"tag":58,"props":646,"children":648},{"className":647},[],[649],{"type":49,"value":650},"deployFailedAt",{"type":49,"value":652}," while its matching\nfinished timestamp remains null. A null finished timestamp by itself does\nnot prove the phase is still running.",{"type":43,"tag":98,"props":654,"children":655},{},[656],{"type":49,"value":657},"Report what is observable: selected app and environment, deployment status,\nversion or commit metadata if returned, phase timestamps, and evidence gaps.",{"type":43,"tag":239,"props":659,"children":661},{"id":660},"why-did-the-deployment-fail",[662],{"type":49,"value":663},"Why did the deployment fail?",{"type":43,"tag":94,"props":665,"children":666},{},[667,679,715,728,739,744,749],{"type":43,"tag":98,"props":668,"children":669},{},[670,672,677],{"type":49,"value":671},"Fetch the deployment with ",{"type":43,"tag":58,"props":673,"children":675},{"className":674},[],[676],{"type":49,"value":602},{"type":49,"value":678}," and identify the failed phase\nfrom its status and timestamps.",{"type":43,"tag":98,"props":680,"children":681},{},[682,683,689,691,697,699,705,707,713],{"type":49,"value":102},{"type":43,"tag":58,"props":684,"children":686},{"className":685},[],[687],{"type":49,"value":688},"get_build_logs",{"type":49,"value":690}," only when ",{"type":43,"tag":58,"props":692,"children":694},{"className":693},[],[695],{"type":49,"value":696},"logsAvailable",{"type":49,"value":698}," is true. Start with a narrow\n",{"type":43,"tag":58,"props":700,"children":702},{"className":701},[],[703],{"type":49,"value":704},"since",{"type":49,"value":706}," window or ",{"type":43,"tag":58,"props":708,"children":710},{"className":709},[],[711],{"type":49,"value":712},"q",{"type":49,"value":714}," filter, then broaden only if needed.",{"type":43,"tag":98,"props":716,"children":717},{},[718,720,726],{"type":49,"value":719},"Page until ",{"type":43,"tag":58,"props":721,"children":723},{"className":722},[],[724],{"type":49,"value":725},"nextCursor",{"type":49,"value":727}," is null when a complete result is required.",{"type":43,"tag":98,"props":729,"children":730},{},[731,732,737],{"type":49,"value":609},{"type":43,"tag":58,"props":733,"children":735},{"className":734},[],[736],{"type":49,"value":696},{"type":49,"value":738}," as a retention and retrieval signal, not proof that\nevery phase produced log entries.",{"type":43,"tag":98,"props":740,"children":741},{},[742],{"type":49,"value":743},"Treat an empty result as \"no matching retrievable server-side logs,\" not as\nproof that the build succeeded or produced no errors.",{"type":43,"tag":98,"props":745,"children":746},{},[747],{"type":49,"value":748},"Build output produced on a user's machine is outside MCP. Mention this only\nwhen the user says the deployment was built with the CLI; direct them to the\noriginating CLI output for local build failures.",{"type":43,"tag":98,"props":750,"children":751},{},[752],{"type":49,"value":753},"Report the failed phase, relevant timestamps, the smallest useful evidence,\nthe inferred cause, and any uncertainty. Do not merely restate raw logs.",{"type":43,"tag":239,"props":755,"children":757},{"id":756},"why-is-the-running-app-failing",[758],{"type":49,"value":759},"Why is the running app failing?",{"type":43,"tag":94,"props":761,"children":762},{},[763,775,793,798,803],{"type":43,"tag":98,"props":764,"children":765},{},[766,768,774],{"type":49,"value":767},"Resolve the exact environment and call ",{"type":43,"tag":58,"props":769,"children":771},{"className":770},[],[772],{"type":49,"value":773},"get_runtime_logs",{"type":49,"value":301},{"type":43,"tag":98,"props":776,"children":777},{},[778,780,785,786,791],{"type":49,"value":779},"Narrow by ",{"type":43,"tag":58,"props":781,"children":783},{"className":782},[],[784],{"type":49,"value":704},{"type":49,"value":505},{"type":43,"tag":58,"props":787,"children":789},{"className":788},[],[790],{"type":49,"value":712},{"type":49,"value":792}," before retrieving a broad window. Page completely\nwhen the conclusion depends on absence.",{"type":43,"tag":98,"props":794,"children":795},{},[796],{"type":49,"value":797},"Runtime logs may be unavailable because of retention. Treat an empty result\nas no retrievable logs and report the limitation.",{"type":43,"tag":98,"props":799,"children":800},{},[801],{"type":49,"value":802},"Correlate runtime evidence with the latest deployment record when useful,\nbut do not claim causation from timing alone.",{"type":43,"tag":98,"props":804,"children":805},{},[806],{"type":49,"value":807},"Report the observed error pattern, affected interval, likely cause, evidence,\nand limitations.",{"type":43,"tag":239,"props":809,"children":811},{"id":810},"is-required-configuration-present",[812],{"type":49,"value":813},"Is required configuration present?",{"type":43,"tag":94,"props":815,"children":816},{},[817,822,827,840,853,866,871],{"type":43,"tag":98,"props":818,"children":819},{},[820],{"type":49,"value":821},"Establish the required key set from an authoritative source: a user-provided\nkey list, a project configuration schema or documented requirement, or a\nreference environment the user explicitly designates as complete.",{"type":43,"tag":98,"props":823,"children":824},{},[825],{"type":49,"value":826},"If the source is a protected file containing values, run deterministic\nkey-only extraction locally and emit only key names. Never open the source\nthrough a model-visible read or include its values in chat or tool output.",{"type":43,"tag":98,"props":828,"children":829},{},[830,832,838],{"type":49,"value":831},"Obtain an authoritative secrecy designation for every required key from the\nuser, a project schema or documented requirement, or a reference environment\nexplicitly designated as authoritative for secrecy. An ",{"type":43,"tag":58,"props":833,"children":835},{"className":834},[],[836],{"type":49,"value":837},".env",{"type":49,"value":839}," file or plain\nkey list establishes names only; never infer secrecy from key names.",{"type":43,"tag":98,"props":841,"children":842},{},[843,845,851],{"type":49,"value":844},"Resolve the environment, call ",{"type":43,"tag":58,"props":846,"children":848},{"className":847},[],[849],{"type":49,"value":850},"list_variables",{"type":49,"value":852},", and compare its keys and\nsecrecy metadata with the established requirements. It proves what is\nconfigured, not what is required. Exhaust pagination before concluding that\na key is missing.",{"type":43,"tag":98,"props":854,"children":855},{},[856,858,864],{"type":49,"value":857},"Report keys and metadata only. Secret entries have ",{"type":43,"tag":58,"props":859,"children":861},{"className":860},[],[862],{"type":49,"value":863},"isSecret: true",{"type":49,"value":865}," and no\nvalue; a missing secret value is expected.",{"type":43,"tag":98,"props":867,"children":868},{},[869],{"type":49,"value":870},"If the required set or any secrecy designation is unresolved, stop before a\nCLI mutation or dependent deployment unless the user explicitly establishes\nthat no configuration is required.",{"type":43,"tag":98,"props":872,"children":873},{},[874,876,881,883,888],{"type":49,"value":875},"For missing or misclassified keys, route to ",{"type":43,"tag":58,"props":877,"children":879},{"className":878},[],[880],{"type":49,"value":76},{"type":49,"value":882}," without\nrequesting values in chat. After the write, verify required keys and secrecy\nwith ",{"type":43,"tag":58,"props":884,"children":886},{"className":885},[],[887],{"type":49,"value":850},{"type":49,"value":889},". If it partially fails, report failed keys without\nvalues and stop before deployment; preserve successful keys and the\nenvironment.",{"type":43,"tag":239,"props":891,"children":893},{"id":892},"why-is-this-environment-serving-the-wrong-branch-or-route",[894],{"type":49,"value":895},"Why is this environment serving the wrong branch or route?",{"type":43,"tag":94,"props":897,"children":898},{},[899,918,923,956,969,1000,1020,1025],{"type":43,"tag":98,"props":900,"children":901},{},[902,904,909,911,916],{"type":49,"value":903},"Resolve the exact environment and report its current branch, mount,\n",{"type":43,"tag":58,"props":905,"children":907},{"className":906},[],[908],{"type":49,"value":530},{"type":49,"value":910},", and latest deployment status. Report a null ",{"type":43,"tag":58,"props":912,"children":914},{"className":913},[],[915],{"type":49,"value":530},{"type":49,"value":917}," without\nconstructing an address.",{"type":43,"tag":98,"props":919,"children":920},{},[921],{"type":49,"value":922},"Compare the current branch and mount with the user's intended mapping. If\nthe request is only diagnostic, stop after reporting the mismatch.",{"type":43,"tag":98,"props":924,"children":925},{},[926,928,933,935,940,942,947,949,955],{"type":49,"value":927},"If the correction changes the mount, call ",{"type":43,"tag":58,"props":929,"children":931},{"className":930},[],[932],{"type":49,"value":496},{"type":49,"value":934}," and use ",{"type":43,"tag":58,"props":936,"children":938},{"className":937},[],[939],{"type":49,"value":511},{"type":49,"value":941},":\n",{"type":43,"tag":58,"props":943,"children":945},{"className":944},[],[946],{"type":49,"value":284},{"type":49,"value":948}," is valid only when false; a site-attached app requires a non-root mount.\nDo not infer attachment from ",{"type":43,"tag":58,"props":950,"children":952},{"className":951},[],[953],{"type":49,"value":954},"siteId",{"type":49,"value":301},{"type":43,"tag":98,"props":957,"children":958},{},[959,961,967],{"type":49,"value":960},"For a correction, show the exact before-and-after mapping. Explain that\n",{"type":43,"tag":58,"props":962,"children":964},{"className":963},[],[965],{"type":49,"value":966},"update_environment",{"type":49,"value":968}," is immediate, has no dry run, and does not deploy code.",{"type":43,"tag":98,"props":970,"children":971},{},[972,973,978,980,985,987,992,993,999],{"type":49,"value":343},{"type":43,"tag":58,"props":974,"children":976},{"className":975},[],[977],{"type":49,"value":349},{"type":49,"value":979},", call ",{"type":43,"tag":58,"props":981,"children":983},{"className":982},[],[984],{"type":49,"value":966},{"type":49,"value":986}," once, and report the returned\nenvironment, ",{"type":43,"tag":58,"props":988,"children":990},{"className":989},[],[991],{"type":49,"value":530},{"type":49,"value":451},{"type":43,"tag":58,"props":994,"children":996},{"className":995},[],[997],{"type":49,"value":998},"mountRefreshStatus",{"type":49,"value":301},{"type":43,"tag":98,"props":1001,"children":1002},{},[1003,1005,1011,1013,1018],{"type":49,"value":1004},"For an unreadable or uncertain result, locate the original ",{"type":43,"tag":58,"props":1006,"children":1008},{"className":1007},[],[1009],{"type":49,"value":1010},"env_id",{"type":49,"value":1012},". If using\nthe expected new branch as a filter, accept a returned environment only when\nits ID equals that original ",{"type":43,"tag":58,"props":1014,"children":1016},{"className":1015},[],[1017],{"type":49,"value":1010},{"type":49,"value":1019},", then compare its branch and mount with\nthe requested values. A different ID or no uniquely matched original target\nis ambiguous: do not continue or retry. Never reuse the old branch filter\nafter a branch-changing update.",{"type":43,"tag":98,"props":1021,"children":1022},{},[1023],{"type":49,"value":1024},"A failed or unknown mount refresh does not mean the environment update was\nrolled back. Report routing as uncertain and do not retry solely because the\nrefresh failed.",{"type":43,"tag":98,"props":1026,"children":1027},{},[1028,1030,1036],{"type":49,"value":1029},"If the branch changed and the user wants its code deployed, treat\n",{"type":43,"tag":58,"props":1031,"children":1033},{"className":1032},[],[1034],{"type":49,"value":1035},"trigger_deployment",{"type":49,"value":1037}," as a separate previewed and confirmed mutation.",{"type":43,"tag":239,"props":1039,"children":1041},{"id":1040},"create-an-isolated-environment-for-a-branch-and-deploy-it",[1042],{"type":49,"value":1043},"Create an isolated environment for a branch and deploy it",{"type":43,"tag":94,"props":1045,"children":1046},{},[1047,1066,1078,1091,1117,1135,1140],{"type":43,"tag":98,"props":1048,"children":1049},{},[1050,1052,1057,1059,1064],{"type":49,"value":1051},"Resolve the existing app, call ",{"type":43,"tag":58,"props":1053,"children":1055},{"className":1054},[],[1056],{"type":49,"value":496},{"type":49,"value":1058},", and validate the proposed mount\nwith ",{"type":43,"tag":58,"props":1060,"children":1062},{"className":1061},[],[1063],{"type":49,"value":511},{"type":49,"value":1065}," before previewing the mutation.",{"type":43,"tag":98,"props":1067,"children":1068},{},[1069,1071,1076],{"type":49,"value":1070},"Page through ",{"type":43,"tag":58,"props":1072,"children":1074},{"className":1073},[],[1075],{"type":49,"value":522},{"type":49,"value":1077}," to check whether the requested branch or\nmount is already in use.",{"type":43,"tag":98,"props":1079,"children":1080},{},[1081,1083,1089],{"type":49,"value":1082},"Show the proposed branch and mount. Explain that ",{"type":43,"tag":58,"props":1084,"children":1086},{"className":1085},[],[1087],{"type":49,"value":1088},"create_environment",{"type":49,"value":1090}," is\nimmediate, has no dry run, and creates a mapping without deploying code.",{"type":43,"tag":98,"props":1092,"children":1093},{},[1094,1096,1101,1103,1108,1110,1115],{"type":49,"value":1095},"Generate one stable ",{"type":43,"tag":58,"props":1097,"children":1099},{"className":1098},[],[1100],{"type":49,"value":357},{"type":49,"value":1102},", require ",{"type":43,"tag":58,"props":1104,"children":1106},{"className":1105},[],[1107],{"type":49,"value":349},{"type":49,"value":1109},", and call\n",{"type":43,"tag":58,"props":1111,"children":1113},{"className":1112},[],[1114],{"type":49,"value":1088},{"type":49,"value":1116},". Reuse that key only for exact retries.",{"type":43,"tag":98,"props":1118,"children":1119},{},[1120,1122,1127,1128,1133],{"type":49,"value":1121},"Report the returned environment, ",{"type":43,"tag":58,"props":1123,"children":1125},{"className":1124},[],[1126],{"type":49,"value":530},{"type":49,"value":451},{"type":43,"tag":58,"props":1129,"children":1131},{"className":1130},[],[1132],{"type":49,"value":998},{"type":49,"value":1134},". If the\nresult is uncertain, search for the expected branch and compare the\nenvironment ID, branch, and mount; use a returned ID to distinguish concurrent\ncreations. Do not retry while the created environment remains ambiguous.",{"type":43,"tag":98,"props":1136,"children":1137},{},[1138],{"type":49,"value":1139},"A failed refresh means creation succeeded but routing may be incomplete. Do\nnot retry creation or delete the environment automatically.",{"type":43,"tag":98,"props":1141,"children":1142},{},[1143],{"type":49,"value":1144},"Before deploying this new environment, follow \"Is required configuration\npresent?\" as a mandatory gate. Continue only after requirements and secrecy\nare verified, or the user explicitly establishes that none are required.\nThen use the deployment workflow below for preview, confirmation,\nattribution, and monitoring.",{"type":43,"tag":239,"props":1146,"children":1148},{"id":1147},"can-this-deployment-be-retried-rolled-back-or-rebuilt-from-branch-head",[1149],{"type":49,"value":1150},"Can this deployment be retried, rolled back, or rebuilt from branch HEAD?",{"type":43,"tag":52,"props":1152,"children":1153},{},[1154],{"type":49,"value":1155},"Use the mutation's default dry run as the capability check. Do not infer\neligibility from missing logs, app metadata, or deployment metadata.",{"type":43,"tag":52,"props":1157,"children":1158},{},[1159],{"type":49,"value":1160},"For a new deployment from the connected branch or a prior exact commit:",{"type":43,"tag":94,"props":1162,"children":1163},{},[1164,1169,1174,1200,1212,1217,1242,1294,1319,1324],{"type":43,"tag":98,"props":1165,"children":1166},{},[1167],{"type":49,"value":1168},"Resolve the environment. For a retry or rollback, also resolve the exact\nprior deployment.",{"type":43,"tag":98,"props":1170,"children":1171},{},[1172],{"type":49,"value":1173},"Perform configuration discovery only when the user requests it, deployment\nevidence indicates missing or misclassified variables, the selected commit\nhas documented configuration requirements, or the server rejects the\ndeployment for configuration reasons. Follow \"Is required configuration\npresent?\" when one of these conditions applies. If a preview or execution\nrejection creates the condition, resolve it before retrying. Otherwise add\nno configuration prerequisite.",{"type":43,"tag":98,"props":1175,"children":1176},{},[1177,1179,1184,1186,1192,1194,1199],{"type":49,"value":1178},"Preview ",{"type":43,"tag":58,"props":1180,"children":1182},{"className":1181},[],[1183],{"type":49,"value":1035},{"type":49,"value":1185}," for branch HEAD or ",{"type":43,"tag":58,"props":1187,"children":1189},{"className":1188},[],[1190],{"type":49,"value":1191},"redeploy",{"type":49,"value":1193}," for a prior commit.\nIf preview rejects the source, make no mutation and route local-source\ndeployment to ",{"type":43,"tag":58,"props":1195,"children":1197},{"className":1196},[],[1198],{"type":49,"value":76},{"type":49,"value":301},{"type":43,"tag":98,"props":1201,"children":1202},{},[1203,1205,1210],{"type":49,"value":1204},"For ",{"type":43,"tag":58,"props":1206,"children":1208},{"className":1207},[],[1209],{"type":49,"value":1191},{"type":49,"value":1211},", explain that the older commit runs with the environment's\ncurrent configuration, so compatibility is not guaranteed.",{"type":43,"tag":98,"props":1213,"children":1214},{},[1215],{"type":49,"value":1216},"Show the returned branch or commit and explain that execution creates a new\nGitHub build, not a deployment of local files.",{"type":43,"tag":98,"props":1218,"children":1219},{},[1220,1221,1226,1228,1233,1235,1240],{"type":49,"value":343},{"type":43,"tag":58,"props":1222,"children":1224},{"className":1223},[],[1225],{"type":49,"value":349},{"type":49,"value":1227},". Immediately after confirmation, record the newest\ndeployment as the correlation baseline, then execute with ",{"type":43,"tag":58,"props":1229,"children":1231},{"className":1230},[],[1232],{"type":49,"value":365},{"type":49,"value":1234},"\nand one stable ",{"type":43,"tag":58,"props":1236,"children":1238},{"className":1237},[],[1239],{"type":49,"value":357},{"type":49,"value":1241},". Reuse the key only for exact retries of this\nrequest.",{"type":43,"tag":98,"props":1243,"children":1244},{},[1245,1247],{"type":49,"value":1246},"Interpret the execution result before monitoring:\n",{"type":43,"tag":135,"props":1248,"children":1249},{},[1250,1261,1278,1289],{"type":43,"tag":98,"props":1251,"children":1252},{},[1253,1259],{"type":43,"tag":58,"props":1254,"children":1256},{"className":1255},[],[1257],{"type":49,"value":1258},"queued",{"type":49,"value":1260},": this call enqueued a deployment.",{"type":43,"tag":98,"props":1262,"children":1263},{},[1264,1269,1271,1276],{"type":43,"tag":58,"props":1265,"children":1267},{"className":1266},[],[1268],{"type":49,"value":386},{"type":49,"value":1270}," from ",{"type":43,"tag":58,"props":1272,"children":1274},{"className":1273},[],[1275],{"type":49,"value":1035},{"type":49,"value":1277},": the branch has no commit, so no\ndeployment was enqueued.",{"type":43,"tag":98,"props":1279,"children":1280},{},[1281,1287],{"type":43,"tag":58,"props":1282,"children":1284},{"className":1283},[],[1285],{"type":49,"value":1286},"processing",{"type":49,"value":1288},": an earlier call with this key is already in flight; this call\ndid not enqueue a duplicate.",{"type":43,"tag":98,"props":1290,"children":1291},{},[1292],{"type":49,"value":1293},"An unknown or unreadable status leaves the outcome uncertain.",{"type":43,"tag":98,"props":1295,"children":1296},{},[1297,1299,1304,1306,1311,1312,1317],{"type":49,"value":1298},"The action returns no deployment ID. For ",{"type":43,"tag":58,"props":1300,"children":1302},{"className":1301},[],[1303],{"type":49,"value":1258},{"type":49,"value":1305}," or an existing in-flight\nrequest, poll ",{"type":43,"tag":58,"props":1307,"children":1309},{"className":1308},[],[1310],{"type":49,"value":594},{"type":49,"value":505},{"type":43,"tag":58,"props":1313,"children":1315},{"className":1314},[],[1316],{"type":49,"value":602},{"type":49,"value":1318}," for a record appearing\nabove the baseline captured before the first execution attempt. If that\nbaseline is unavailable, report that attribution may be ambiguous. Do not\nassume the newest record belongs to this request when deployments are\nconcurrent.",{"type":43,"tag":98,"props":1320,"children":1321},{},[1322],{"type":49,"value":1323},"Stop when the attributed deployment leaves an active state or the bounded\nmonitoring period ends. If monitoring ends first, report the last status and\ntimestamp; do not call it failed or enqueue a replacement for that reason.",{"type":43,"tag":98,"props":1325,"children":1326},{},[1327],{"type":49,"value":1328},"For a retry or rollback, preview the prior deployment's exact commit hash\nand message. A rollback creates a new build at that commit; it does not move\nthe environment branch.",{"type":43,"tag":87,"props":1330,"children":1332},{"id":1331},"_4-apply-shared-evidence-and-safety-rules",[1333],{"type":49,"value":1334},"4. Apply shared evidence and safety rules",{"type":43,"tag":135,"props":1336,"children":1337},{},[1338,1343,1348,1353,1365,1370,1375],{"type":43,"tag":98,"props":1339,"children":1340},{},[1341],{"type":49,"value":1342},"Treat build, deploy, and runtime logs as potentially sensitive customer\noutput. Inspect for tokens, credentials, cookies, authorization headers, and\npresigned URLs before quoting or saving them.",{"type":43,"tag":98,"props":1344,"children":1345},{},[1346],{"type":49,"value":1347},"Quote only the minimum log evidence needed. Redact sensitive values and URLs.",{"type":43,"tag":98,"props":1349,"children":1350},{},[1351],{"type":49,"value":1352},"A request to inspect, diagnose, or preview does not authorize a mutation.",{"type":43,"tag":98,"props":1354,"children":1355},{},[1356,1358,1363],{"type":49,"value":1357},"Require an itemized preview and the exact word ",{"type":43,"tag":58,"props":1359,"children":1361},{"className":1360},[],[1362],{"type":49,"value":349},{"type":49,"value":1364}," before every\nmutation.",{"type":43,"tag":98,"props":1366,"children":1367},{},[1368],{"type":49,"value":1369},"Reconcile an uncertain mutation through observable state before retrying it.",{"type":43,"tag":98,"props":1371,"children":1372},{},[1373],{"type":49,"value":1374},"Reuse an idempotency key only for exact retries of the same logical request.",{"type":43,"tag":98,"props":1376,"children":1377},{},[1378],{"type":49,"value":1379},"Never delete a newly created app or environment automatically when\nconfiguration or deployment fails. Report the partial state.",{"type":43,"tag":87,"props":1381,"children":1383},{"id":1382},"_5-handle-explicit-administrative-requests",[1384],{"type":49,"value":1385},"5. Handle explicit administrative requests",{"type":43,"tag":52,"props":1387,"children":1388},{},[1389],{"type":49,"value":1390},"These operations are supported but are not the skill's primary workflow.",{"type":43,"tag":52,"props":1392,"children":1393},{},[1394,1395,1401],{"type":49,"value":1204},{"type":43,"tag":58,"props":1396,"children":1398},{"className":1397},[],[1399],{"type":49,"value":1400},"update_app",{"type":49,"value":1402},":",{"type":43,"tag":94,"props":1404,"children":1405},{},[1406,1417,1430,1456,1480,1485],{"type":43,"tag":98,"props":1407,"children":1408},{},[1409,1411,1416],{"type":49,"value":1410},"Fetch the current app with ",{"type":43,"tag":58,"props":1412,"children":1414},{"className":1413},[],[1415],{"type":49,"value":496},{"type":49,"value":301},{"type":43,"tag":98,"props":1418,"children":1419},{},[1420,1422,1428],{"type":49,"value":1421},"For a name or description change, prepare and show the exact change. Pass\n",{"type":43,"tag":58,"props":1423,"children":1425},{"className":1424},[],[1426],{"type":49,"value":1427},"description: null",{"type":49,"value":1429}," to clear a description.",{"type":43,"tag":98,"props":1431,"children":1432},{},[1433,1434,1440,1442,1447,1449,1455],{"type":49,"value":1204},{"type":43,"tag":58,"props":1435,"children":1437},{"className":1436},[],[1438],{"type":49,"value":1439},"source_url",{"type":49,"value":1441},", compare the current ",{"type":43,"tag":58,"props":1443,"children":1445},{"className":1444},[],[1446],{"type":49,"value":449},{"type":49,"value":1448}," with the requested canonical\nGitHub repository URL. Explain that the immediate update requires a\nuser-authorized token; machine tokens return ",{"type":43,"tag":58,"props":1450,"children":1452},{"className":1451},[],[1453],{"type":49,"value":1454},"403",{"type":49,"value":301},{"type":43,"tag":98,"props":1457,"children":1458},{},[1459,1460,1465,1466,1471,1473,1478],{"type":49,"value":343},{"type":43,"tag":58,"props":1461,"children":1463},{"className":1462},[],[1464],{"type":49,"value":349},{"type":49,"value":979},{"type":43,"tag":58,"props":1467,"children":1469},{"className":1468},[],[1470],{"type":49,"value":1400},{"type":49,"value":1472}," once, and verify with ",{"type":43,"tag":58,"props":1474,"children":1476},{"className":1475},[],[1477],{"type":49,"value":496},{"type":49,"value":1479},". An\nunreadable response requires reconciliation before retrying.",{"type":43,"tag":98,"props":1481,"children":1482},{},[1483],{"type":49,"value":1484},"A source update does not change an environment branch or deploy code. Treat\nthose as separate confirmed mutations.",{"type":43,"tag":98,"props":1486,"children":1487},{},[1488],{"type":49,"value":1489},"Renaming a standalone app also attempts to rename its backing site; a sync\nfailure can leave the old site name. Site-attached parent names are unchanged.",{"type":43,"tag":52,"props":1491,"children":1492},{},[1493,1494,1500],{"type":49,"value":1204},{"type":43,"tag":58,"props":1495,"children":1497},{"className":1496},[],[1498],{"type":49,"value":1499},"delete_variable",{"type":49,"value":1402},{"type":43,"tag":94,"props":1502,"children":1503},{},[1504,1509,1521,1538],{"type":43,"tag":98,"props":1505,"children":1506},{},[1507],{"type":49,"value":1508},"Preview with the default dry run.",{"type":43,"tag":98,"props":1510,"children":1511},{},[1512,1513,1519],{"type":49,"value":176},{"type":43,"tag":58,"props":1514,"children":1516},{"className":1515},[],[1517],{"type":49,"value":1518},"exists",{"type":49,"value":1520}," is false, report that nothing was deleted and stop.",{"type":43,"tag":98,"props":1522,"children":1523},{},[1524,1525,1530,1532,1537],{"type":49,"value":176},{"type":43,"tag":58,"props":1526,"children":1528},{"className":1527},[],[1529],{"type":49,"value":1518},{"type":49,"value":1531}," is true, show the app, environment, and key; warn that deletion\nis permanent and require ",{"type":43,"tag":58,"props":1533,"children":1535},{"className":1534},[],[1536],{"type":49,"value":349},{"type":49,"value":301},{"type":43,"tag":98,"props":1539,"children":1540},{},[1541,1543,1548,1550,1556],{"type":49,"value":1542},"Call once with ",{"type":43,"tag":58,"props":1544,"children":1546},{"className":1545},[],[1547],{"type":49,"value":365},{"type":49,"value":1549},". Treat ",{"type":43,"tag":58,"props":1551,"children":1553},{"className":1552},[],[1554],{"type":49,"value":1555},"deleted: true",{"type":49,"value":1557}," as success. Reconcile\nan uncertain response with an exact key lookup before retrying.",{"type":43,"tag":52,"props":1559,"children":1560},{},[1561,1562,1568],{"type":49,"value":1204},{"type":43,"tag":58,"props":1563,"children":1565},{"className":1564},[],[1566],{"type":49,"value":1567},"delete_environment",{"type":49,"value":1402},{"type":43,"tag":94,"props":1570,"children":1571},{},[1572,1577,1588,1605,1617],{"type":43,"tag":98,"props":1573,"children":1574},{},[1575],{"type":49,"value":1576},"Preview with the default dry run. Identify the app, environment, branch, and\nmount, and explain that its worker, KV\u002FD1\u002FR2 storage, deployments, and\nvariables will be permanently removed.",{"type":43,"tag":98,"props":1578,"children":1579},{},[1580,1582,1587],{"type":49,"value":1581},"Explain that deletion is irreversible and is rejected for the app's last\nenvironment. Require ",{"type":43,"tag":58,"props":1583,"children":1585},{"className":1584},[],[1586],{"type":49,"value":349},{"type":49,"value":301},{"type":43,"tag":98,"props":1589,"children":1590},{},[1591,1592,1597,1598,1603],{"type":49,"value":1542},{"type":43,"tag":58,"props":1593,"children":1595},{"className":1594},[],[1596],{"type":49,"value":365},{"type":49,"value":1549},{"type":43,"tag":58,"props":1599,"children":1601},{"className":1600},[],[1602],{"type":49,"value":1555},{"type":49,"value":1604}," as success.",{"type":43,"tag":98,"props":1606,"children":1607},{},[1608,1610,1615],{"type":49,"value":1609},"A failed or null ",{"type":43,"tag":58,"props":1611,"children":1613},{"className":1612},[],[1614],{"type":49,"value":998},{"type":49,"value":1616}," means deletion succeeded but routing\ncleanup is failed or uncertain. Report it and never retry the delete.",{"type":43,"tag":98,"props":1618,"children":1619},{},[1620,1622,1627],{"type":49,"value":1621},"For an uncertain response, page until the original ",{"type":43,"tag":58,"props":1623,"children":1625},{"className":1624},[],[1626],{"type":49,"value":1010},{"type":49,"value":1628}," is found or the\nlisting ends. Do not use a branch filter whose value may have changed.",{"type":43,"tag":52,"props":1630,"children":1631},{},[1632,1633,1639],{"type":49,"value":1204},{"type":43,"tag":58,"props":1634,"children":1636},{"className":1635},[],[1637],{"type":49,"value":1638},"delete_app",{"type":49,"value":1402},{"type":43,"tag":94,"props":1641,"children":1642},{},[1643,1655,1676,1693],{"type":43,"tag":98,"props":1644,"children":1645},{},[1646,1648,1654],{"type":49,"value":1647},"Preview with the default dry run and report ",{"type":43,"tag":58,"props":1649,"children":1651},{"className":1650},[],[1652],{"type":49,"value":1653},"deletionMode",{"type":49,"value":301},{"type":43,"tag":98,"props":1656,"children":1657},{},[1658,1660,1666,1668,1674],{"type":49,"value":1659},"Explain that ",{"type":43,"tag":58,"props":1661,"children":1663},{"className":1662},[],[1664],{"type":49,"value":1665},"archive",{"type":49,"value":1667}," unpublishes the app and removes it from the dashboard,\nwhile ",{"type":43,"tag":58,"props":1669,"children":1671},{"className":1670},[],[1672],{"type":49,"value":1673},"hard_delete",{"type":49,"value":1675}," permanently deletes the app and all its environments and\ncannot be undone.",{"type":43,"tag":98,"props":1677,"children":1678},{},[1679,1680,1685,1687,1692],{"type":49,"value":343},{"type":43,"tag":58,"props":1681,"children":1683},{"className":1682},[],[1684],{"type":49,"value":349},{"type":49,"value":1686},", then call once with ",{"type":43,"tag":58,"props":1688,"children":1690},{"className":1689},[],[1691],{"type":49,"value":365},{"type":49,"value":301},{"type":43,"tag":98,"props":1694,"children":1695},{},[1696,1697,1702,1704,1709],{"type":49,"value":609},{"type":43,"tag":58,"props":1698,"children":1700},{"className":1699},[],[1701],{"type":49,"value":1555},{"type":49,"value":1703}," as success. Reconcile uncertainty with ",{"type":43,"tag":58,"props":1705,"children":1707},{"className":1706},[],[1708],{"type":49,"value":496},{"type":49,"value":1710}," or the\napp's exact site-and-name lookup before retrying.",{"type":43,"tag":87,"props":1712,"children":1714},{"id":1713},"_6-handle-errors-and-report",[1715],{"type":49,"value":1716},"6. Handle errors and report",{"type":43,"tag":135,"props":1718,"children":1719},{},[1720,1725,1730,1756],{"type":43,"tag":98,"props":1721,"children":1722},{},[1723],{"type":49,"value":1724},"Duplicate environment branch or mount: report the conflicting environment;\ndo not silently update or delete it.",{"type":43,"tag":98,"props":1726,"children":1727},{},[1728],{"type":49,"value":1729},"Partial CLI variable write: report failed keys without values and stop before\ndeployment. Do not roll back successful keys or delete the environment.",{"type":43,"tag":98,"props":1731,"children":1732},{},[1733,1739,1740,1746,1748,1754],{"type":43,"tag":58,"props":1734,"children":1736},{"className":1735},[],[1737],{"type":49,"value":1738},"GITHUB_APP_NOT_INSTALLED",{"type":49,"value":388},{"type":43,"tag":58,"props":1741,"children":1743},{"className":1742},[],[1744],{"type":49,"value":1745},"GITHUB_REPO_NOT_CONNECTED",{"type":49,"value":1747},": provide the returned\n",{"type":43,"tag":58,"props":1749,"children":1751},{"className":1750},[],[1752],{"type":49,"value":1753},"installUrl",{"type":49,"value":1755}," and retry only after the user completes the connection.",{"type":43,"tag":98,"props":1757,"children":1758},{},[1759],{"type":49,"value":1760},"An unsupported deployment preview is a capability boundary, not a reason to\nbypass MCP with a direct API call.",{"type":43,"tag":52,"props":1762,"children":1763},{},[1764],{"type":49,"value":1765},"For each final-report field below, include it only when applicable: the selected\napp; a resolved environment; evidence inspected; observed status; supported\ncause; limitations; mutations performed; partial state; and, when blocked, the\nnext required user action.",{"type":43,"tag":80,"props":1767,"children":1769},{"id":1768},"examples",[1770],{"type":49,"value":1771},"Examples",{"type":43,"tag":87,"props":1773,"children":1775},{"id":1774},"create-a-site-attached-github-app",[1776],{"type":49,"value":1777},"Create a site-attached GitHub app",{"type":43,"tag":52,"props":1779,"children":1780},{},[1781,1787,1789,1795,1796,1802,1804,1810,1812,1818],{"type":43,"tag":1782,"props":1783,"children":1784},"strong",{},[1785],{"type":49,"value":1786},"User:",{"type":49,"value":1788}," \"Create ",{"type":43,"tag":58,"props":1790,"children":1792},{"className":1791},[],[1793],{"type":49,"value":1794},"search-app",{"type":49,"value":1270},{"type":43,"tag":58,"props":1797,"children":1799},{"className":1798},[],[1800],{"type":49,"value":1801},"https:\u002F\u002Fgithub.com\u002Facme\u002Fsearch",{"type":49,"value":1803}," on the\n",{"type":43,"tag":58,"props":1805,"children":1807},{"className":1806},[],[1808],{"type":49,"value":1809},"main",{"type":49,"value":1811}," branch and attach it to my marketing site at ",{"type":43,"tag":58,"props":1813,"children":1815},{"className":1814},[],[1816],{"type":49,"value":1817},"\u002Fsearch",{"type":49,"value":1819},".\"",{"type":43,"tag":52,"props":1821,"children":1822},{},[1823,1825,1830],{"type":49,"value":1824},"Resolve the site, preview ",{"type":43,"tag":58,"props":1826,"children":1828},{"className":1827},[],[1829],{"type":49,"value":336},{"type":49,"value":1831}," with its site ID and non-root mount, and\nuse the GitHub-source creation workflow. Report creation separately from the\nautomatic initial-deployment outcome.",{"type":43,"tag":87,"props":1833,"children":1835},{"id":1834},"diagnose-a-failed-deployment",[1836],{"type":49,"value":1837},"Diagnose a failed deployment",{"type":43,"tag":52,"props":1839,"children":1840},{},[1841,1845],{"type":43,"tag":1782,"props":1842,"children":1843},{},[1844],{"type":49,"value":1786},{"type":49,"value":1846}," \"Why did the latest production deployment fail?\"",{"type":43,"tag":52,"props":1848,"children":1849},{},[1850],{"type":49,"value":1851},"Use the deployment-diagnostics workflow for the latest production deployment.\nRetrieve logs only when available and report empty results as unavailable\nevidence, not success.",{"type":43,"tag":87,"props":1853,"children":1855},{"id":1854},"correct-an-environment-mapping",[1856],{"type":49,"value":1857},"Correct an environment mapping",{"type":43,"tag":52,"props":1859,"children":1860},{},[1861,1865,1867,1872,1874,1879,1881,1886],{"type":43,"tag":1782,"props":1862,"children":1863},{},[1864],{"type":49,"value":1786},{"type":49,"value":1866}," \"Production is serving the preview branch at ",{"type":43,"tag":58,"props":1868,"children":1870},{"className":1869},[],[1871],{"type":49,"value":312},{"type":49,"value":1873},". Point it back to\n",{"type":43,"tag":58,"props":1875,"children":1877},{"className":1876},[],[1878],{"type":49,"value":1809},{"type":49,"value":1880}," at ",{"type":43,"tag":58,"props":1882,"children":1884},{"className":1883},[],[1885],{"type":49,"value":284},{"type":49,"value":1819},{"type":43,"tag":52,"props":1888,"children":1889},{},[1890,1892,1897,1899,1904],{"type":49,"value":1891},"Use the environment-mapping workflow and validate ",{"type":43,"tag":58,"props":1893,"children":1895},{"className":1894},[],[1896],{"type":49,"value":284},{"type":49,"value":1898}," against ",{"type":43,"tag":58,"props":1900,"children":1902},{"className":1901},[],[1903],{"type":49,"value":511},{"type":49,"value":1905},".\nTreat a requested deployment as a separate mutation.",{"type":43,"tag":87,"props":1907,"children":1909},{"id":1908},"provision-configure-and-deploy-a-branch-environment",[1910],{"type":49,"value":1911},"Provision, configure, and deploy a branch environment",{"type":43,"tag":52,"props":1913,"children":1914},{},[1915,1919,1921,1927,1929,1935,1937,1943],{"type":43,"tag":1782,"props":1916,"children":1917},{},[1918],{"type":49,"value":1786},{"type":49,"value":1920}," \"Create a ",{"type":43,"tag":58,"props":1922,"children":1924},{"className":1923},[],[1925],{"type":49,"value":1926},"\u002Fpreview",{"type":49,"value":1928}," environment for ",{"type":43,"tag":58,"props":1930,"children":1932},{"className":1931},[],[1933],{"type":49,"value":1934},"feature\u002Fsearch",{"type":49,"value":1936}," and deploy it.\nIt needs the variables in ",{"type":43,"tag":58,"props":1938,"children":1940},{"className":1939},[],[1941],{"type":49,"value":1942},".env.preview",{"type":49,"value":1819},{"type":43,"tag":52,"props":1945,"children":1946},{},[1947],{"type":49,"value":1948},"Use the new-environment workflow, then apply its mandatory configuration gate\nbefore routing to deployment. Preserve the environment if a later step fails.",{"type":43,"tag":80,"props":1950,"children":1952},{"id":1951},"guidelines",[1953],{"type":49,"value":1954},"Guidelines",{"type":43,"tag":135,"props":1956,"children":1957},{},[1958,1963,1968,1973,1978,1990,1995,2006,2011,2016],{"type":43,"tag":98,"props":1959,"children":1960},{},[1961],{"type":49,"value":1962},"Start from the user's operational question, not the action inventory.",{"type":43,"tag":98,"props":1964,"children":1965},{},[1966],{"type":49,"value":1967},"Prefer observable evidence over assumptions about how an app was built.",{"type":43,"tag":98,"props":1969,"children":1970},{},[1971],{"type":49,"value":1972},"Use mutation previews and returned errors as capability checks.",{"type":43,"tag":98,"props":1974,"children":1975},{},[1976],{"type":49,"value":1977},"Use CLI for local-source apps and deployments, and for variable values.",{"type":43,"tag":98,"props":1979,"children":1980},{},[1981,1983,1988],{"type":49,"value":1982},"Never use ",{"type":43,"tag":58,"props":1984,"children":1986},{"className":1985},[],[1987],{"type":49,"value":63},{"type":49,"value":1989}," for Designer variables.",{"type":43,"tag":98,"props":1991,"children":1992},{},[1993],{"type":49,"value":1994},"Never expose secrets from variables, logs, errors, or URLs.",{"type":43,"tag":98,"props":1996,"children":1997},{},[1998,2000,2005],{"type":49,"value":1999},"Never mutate without an exact preview and explicit ",{"type":43,"tag":58,"props":2001,"children":2003},{"className":2002},[],[2004],{"type":49,"value":349},{"type":49,"value":301},{"type":43,"tag":98,"props":2007,"children":2008},{},[2009],{"type":49,"value":2010},"Never retry an uncertain mutation before reconciling observable state.",{"type":43,"tag":98,"props":2012,"children":2013},{},[2014],{"type":49,"value":2015},"Keep repository, environment, configuration, and deployment changes separate.",{"type":43,"tag":98,"props":2017,"children":2018},{},[2019],{"type":49,"value":2020},"Preserve partial resources unless the user explicitly requests deletion.",{"items":2022,"total":2208},[2023,2041,2058,2075,2092,2108,2124,2138,2152,2164,2178,2194],{"slug":2024,"name":76,"fn":2025,"description":2026,"org":2027,"tags":2028,"stars":24,"repoUrl":25,"updatedAt":2040},"webflow-clicloud","deploy applications to Webflow Cloud","Create, build, and deploy Webflow Cloud apps from the CLI (site-attached or project apps), and manage existing ones — apps, domains, environments, deployments, build\u002Fruntime logs, and environment variables including secrets. Use when initializing or deploying a Cloud app, importing an existing GitHub repository, setting up CI\u002FCD (GitHub Actions or GitHub-linked deploys), setting or importing secrets, retrying or rolling back a deployment, diagnosing a failed build, or resolving app\u002Fenvironment\u002Fworkspace IDs from webflow.json or env vars. The `webflow apps` namespace is beta and requires the CLI's `@next` channel.",{"slug":9,"name":10,"logoUrl":11,"githubOrg":9},[2029,2032,2033,2036,2039],{"name":2030,"slug":2031,"type":16},"CLI","cli",{"name":21,"slug":22,"type":16},{"name":2034,"slug":2035,"type":16},"Deployment","deployment",{"name":2037,"slug":2038,"type":16},"Full-stack","full-stack",{"name":10,"slug":9,"type":16},"2026-09-01T07:58:37.425258",{"slug":2042,"name":2043,"fn":2044,"description":2045,"org":2046,"tags":2047,"stars":24,"repoUrl":25,"updatedAt":2057},"webflow-clicode-component","webflow-cli:code-component","create and deploy Webflow Code Components","Create and deploy reusable React components for Webflow Designer. Configure existing React projects with webflow.json, build and bundle code, validate output, and deploy to workspace using library share. Use when building custom components for designers.",{"slug":9,"name":10,"logoUrl":11,"githubOrg":9},[2048,2049,2050,2053,2056],{"name":2030,"slug":2031,"type":16},{"name":2034,"slug":2035,"type":16},{"name":2051,"slug":2052,"type":16},"React","react",{"name":2054,"slug":2055,"type":16},"UI Components","ui-components",{"name":10,"slug":9,"type":16},"2026-05-18T06:47:41.421071",{"slug":2059,"name":2060,"fn":2061,"description":2062,"org":2063,"tags":2064,"stars":24,"repoUrl":25,"updatedAt":2074},"webflow-clidesigner-extension","webflow-cli:designer-extension","build Webflow Designer Extensions","Build Designer Extensions for custom Webflow Designer functionality. Lists available templates, initializes extension projects from templates (default\u002Freact\u002Ftypescript-alt), bundles extensions for upload, and serves locally for development.",{"slug":9,"name":10,"logoUrl":11,"githubOrg":9},[2065,2066,2069,2070,2073],{"name":2030,"slug":2031,"type":16},{"name":2067,"slug":2068,"type":16},"Plugin Development","plugin-development",{"name":2051,"slug":2052,"type":16},{"name":2071,"slug":2072,"type":16},"TypeScript","typescript",{"name":10,"slug":9,"type":16},"2026-05-18T06:47:43.853573",{"slug":2076,"name":2077,"fn":2078,"description":2079,"org":2080,"tags":2081,"stars":24,"repoUrl":25,"updatedAt":2091},"webflow-clidevlink","webflow-cli:devlink","export Webflow components to React and Next.js","Export Webflow Designer components to React\u002FNext.js code for external projects. Configure devlink settings in webflow.json, sync design updates with devlink sync, validate generated code, show diffs, and provide integration examples. Use when building with Webflow designs in React\u002FNext.js.",{"slug":9,"name":10,"logoUrl":11,"githubOrg":9},[2082,2083,2086,2089,2090],{"name":2030,"slug":2031,"type":16},{"name":2084,"slug":2085,"type":16},"Frontend","frontend",{"name":2087,"slug":2088,"type":16},"Next.js","next-js",{"name":2051,"slug":2052,"type":16},{"name":10,"slug":9,"type":16},"2026-05-18T06:47:40.182468",{"slug":2093,"name":2094,"fn":2095,"description":2096,"org":2097,"tags":2098,"stars":24,"repoUrl":25,"updatedAt":2107},"webflow-clitroubleshooter","webflow-cli:troubleshooter","troubleshoot Webflow CLI issues","Diagnose and fix Webflow CLI issues including installation problems, authentication failures, build errors, and bundle problems. Uses CLI diagnostic flags (--version, --help, --verbose, --debug-bundler) for troubleshooting.",{"slug":9,"name":10,"logoUrl":11,"githubOrg":9},[2099,2100,2103,2106],{"name":2030,"slug":2031,"type":16},{"name":2101,"slug":2102,"type":16},"Configuration","configuration",{"name":2104,"slug":2105,"type":16},"Debugging","debugging",{"name":10,"slug":9,"type":16},"2026-05-18T06:47:48.831648",{"slug":2109,"name":2110,"fn":2111,"description":2112,"org":2113,"tags":2114,"stars":24,"repoUrl":25,"updatedAt":2123},"webflow-code-componentcomponent-audit","webflow-code-component:component-audit","audit Webflow Code Component architecture","Audit Webflow Code Components for architecture decisions - prop exposure, state management, slot opportunities, and Shadow DOM compatibility. Focused on Webflow-specific patterns, not generic React best practices.",{"slug":9,"name":10,"logoUrl":11,"githubOrg":9},[2115,2118,2121,2122],{"name":2116,"slug":2117,"type":16},"Architecture","architecture",{"name":2119,"slug":2120,"type":16},"Code Analysis","code-analysis",{"name":2051,"slug":2052,"type":16},{"name":10,"slug":9,"type":16},"2026-05-18T06:47:46.277768",{"slug":2125,"name":2126,"fn":2127,"description":2128,"org":2129,"tags":2130,"stars":24,"repoUrl":25,"updatedAt":2137},"webflow-code-componentcomponent-scaffold","webflow-code-component:component-scaffold","scaffold Webflow Code Component boilerplate","Generate new Webflow Code Component boilerplate with React component, definition file, and optional styling. Automatically checks prerequisites and can set up missing config\u002Fdependencies.",{"slug":9,"name":10,"logoUrl":11,"githubOrg":9},[2131,2132,2133,2136],{"name":2084,"slug":2085,"type":16},{"name":2051,"slug":2052,"type":16},{"name":2134,"slug":2135,"type":16},"Templates","templates",{"name":10,"slug":9,"type":16},"2026-05-18T06:47:42.638042",{"slug":2139,"name":2140,"fn":2141,"description":2142,"org":2143,"tags":2144,"stars":24,"repoUrl":25,"updatedAt":2151},"webflow-code-componentconvert-component","webflow-code-component:convert-component","convert React components to Webflow Code Components","Convert an existing React component into a Webflow Code Component. Analyzes TypeScript props, maps to Webflow prop types, generates the .webflow.tsx definition file, and identifies required modifications.",{"slug":9,"name":10,"logoUrl":11,"githubOrg":9},[2145,2148,2149,2150],{"name":2146,"slug":2147,"type":16},"Migration","migration",{"name":2051,"slug":2052,"type":16},{"name":2071,"slug":2072,"type":16},{"name":10,"slug":9,"type":16},"2026-05-18T06:47:52.523608",{"slug":2153,"name":2154,"fn":2155,"description":2156,"org":2157,"tags":2158,"stars":24,"repoUrl":25,"updatedAt":2163},"webflow-code-componentdeploy-guide","webflow-code-component:deploy-guide","deploy Webflow Code Components","Step-by-step guide for deploying Webflow Code Components to a workspace. Covers authentication, pre-flight checks, deployment execution, and verification.",{"slug":9,"name":10,"logoUrl":11,"githubOrg":9},[2159,2160,2161,2162],{"name":2034,"slug":2035,"type":16},{"name":2084,"slug":2085,"type":16},{"name":2051,"slug":2052,"type":16},{"name":10,"slug":9,"type":16},"2026-05-18T06:47:38.947875",{"slug":2165,"name":2166,"fn":2167,"description":2168,"org":2169,"tags":2170,"stars":24,"repoUrl":25,"updatedAt":2177},"webflow-code-componentlocal-dev-setup","webflow-code-component:local-dev-setup","set up local Webflow Code Component projects","Initialize a new Webflow Code Components project from scratch. Creates project structure, installs dependencies, configures webflow.json, and sets up development environment.",{"slug":9,"name":10,"logoUrl":11,"githubOrg":9},[2171,2172,2175,2176],{"name":2101,"slug":2102,"type":16},{"name":2173,"slug":2174,"type":16},"Local Development","local-development",{"name":2051,"slug":2052,"type":16},{"name":10,"slug":9,"type":16},"2026-05-18T06:47:50.062783",{"slug":2179,"name":2180,"fn":2181,"description":2182,"org":2183,"tags":2184,"stars":24,"repoUrl":25,"updatedAt":2193},"webflow-code-componentpre-deploy-check","webflow-code-component:pre-deploy-check","validate Webflow Code Components before deployment","Pre-deployment validation for Webflow Code Components. Checks bundle size, dependencies, prop configurations, SSR compatibility, styling setup, and common issues before running webflow library share.",{"slug":9,"name":10,"logoUrl":11,"githubOrg":9},[2185,2186,2189,2192],{"name":2034,"slug":2035,"type":16},{"name":2187,"slug":2188,"type":16},"QA","qa",{"name":2190,"slug":2191,"type":16},"Validation","validation",{"name":10,"slug":9,"type":16},"2026-05-18T06:47:51.300653",{"slug":2195,"name":2196,"fn":2197,"description":2198,"org":2199,"tags":2200,"stars":24,"repoUrl":25,"updatedAt":2207},"webflow-code-componenttroubleshoot-deploy","webflow-code-component:troubleshoot-deploy","troubleshoot Webflow Code Component deployments","Debug deployment failures for Webflow Code Components. Analyzes error messages, identifies root causes, and provides specific fixes for common issues.",{"slug":9,"name":10,"logoUrl":11,"githubOrg":9},[2201,2202,2203,2206],{"name":2104,"slug":2105,"type":16},{"name":2034,"slug":2035,"type":16},{"name":2204,"slug":2205,"type":16},"Observability","observability",{"name":10,"slug":9,"type":16},"2026-05-18T06:47:45.057571",31,{"items":2210,"total":2208},[2211,2219,2227,2235,2243,2250,2257],{"slug":2024,"name":76,"fn":2025,"description":2026,"org":2212,"tags":2213,"stars":24,"repoUrl":25,"updatedAt":2040},{"slug":9,"name":10,"logoUrl":11,"githubOrg":9},[2214,2215,2216,2217,2218],{"name":2030,"slug":2031,"type":16},{"name":21,"slug":22,"type":16},{"name":2034,"slug":2035,"type":16},{"name":2037,"slug":2038,"type":16},{"name":10,"slug":9,"type":16},{"slug":2042,"name":2043,"fn":2044,"description":2045,"org":2220,"tags":2221,"stars":24,"repoUrl":25,"updatedAt":2057},{"slug":9,"name":10,"logoUrl":11,"githubOrg":9},[2222,2223,2224,2225,2226],{"name":2030,"slug":2031,"type":16},{"name":2034,"slug":2035,"type":16},{"name":2051,"slug":2052,"type":16},{"name":2054,"slug":2055,"type":16},{"name":10,"slug":9,"type":16},{"slug":2059,"name":2060,"fn":2061,"description":2062,"org":2228,"tags":2229,"stars":24,"repoUrl":25,"updatedAt":2074},{"slug":9,"name":10,"logoUrl":11,"githubOrg":9},[2230,2231,2232,2233,2234],{"name":2030,"slug":2031,"type":16},{"name":2067,"slug":2068,"type":16},{"name":2051,"slug":2052,"type":16},{"name":2071,"slug":2072,"type":16},{"name":10,"slug":9,"type":16},{"slug":2076,"name":2077,"fn":2078,"description":2079,"org":2236,"tags":2237,"stars":24,"repoUrl":25,"updatedAt":2091},{"slug":9,"name":10,"logoUrl":11,"githubOrg":9},[2238,2239,2240,2241,2242],{"name":2030,"slug":2031,"type":16},{"name":2084,"slug":2085,"type":16},{"name":2087,"slug":2088,"type":16},{"name":2051,"slug":2052,"type":16},{"name":10,"slug":9,"type":16},{"slug":2093,"name":2094,"fn":2095,"description":2096,"org":2244,"tags":2245,"stars":24,"repoUrl":25,"updatedAt":2107},{"slug":9,"name":10,"logoUrl":11,"githubOrg":9},[2246,2247,2248,2249],{"name":2030,"slug":2031,"type":16},{"name":2101,"slug":2102,"type":16},{"name":2104,"slug":2105,"type":16},{"name":10,"slug":9,"type":16},{"slug":2109,"name":2110,"fn":2111,"description":2112,"org":2251,"tags":2252,"stars":24,"repoUrl":25,"updatedAt":2123},{"slug":9,"name":10,"logoUrl":11,"githubOrg":9},[2253,2254,2255,2256],{"name":2116,"slug":2117,"type":16},{"name":2119,"slug":2120,"type":16},{"name":2051,"slug":2052,"type":16},{"name":10,"slug":9,"type":16},{"slug":2125,"name":2126,"fn":2127,"description":2128,"org":2258,"tags":2259,"stars":24,"repoUrl":25,"updatedAt":2137},{"slug":9,"name":10,"logoUrl":11,"githubOrg":9},[2260,2261,2262,2263],{"name":2084,"slug":2085,"type":16},{"name":2051,"slug":2052,"type":16},{"name":2134,"slug":2135,"type":16},{"name":10,"slug":9,"type":16}]