[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-jetbrains-render-deploy":3,"mdc-24s0he-key":33,"related-repo-jetbrains-render-deploy":3139,"related-org-jetbrains-render-deploy":3263},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":22,"repoUrl":23,"updatedAt":24,"license":25,"forks":26,"topics":27,"repo":28,"sourceUrl":31,"mdContent":32},"render-deploy","deploy applications to Render","Deploy applications to Render by analyzing codebases, generating render.yaml Blueprints, and providing Dashboard deeplinks. Use when the user wants to deploy, host, publish, or set up their application on Render's cloud platform.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},"jetbrains","JetBrains","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fjetbrains.png",[12,16,19],{"name":13,"slug":14,"type":15},"Render","render","tag",{"name":17,"slug":18,"type":15},"Deployment","deployment",{"name":20,"slug":21,"type":15},"Cloud","cloud",252,"https:\u002F\u002Fgithub.com\u002FJetBrains\u002Fskills","2026-07-13T06:39:54.54444",null,17,[],{"repoUrl":23,"stars":22,"forks":26,"topics":29,"description":30},[],"Curated agent skills collection verified by JetBrains","https:\u002F\u002Fgithub.com\u002FJetBrains\u002Fskills\u002Ftree\u002FHEAD\u002Frender-deploy","---\nname: render-deploy\ndescription: Deploy applications to Render by analyzing codebases, generating render.yaml Blueprints, and providing Dashboard deeplinks. Use when the user wants to deploy, host, publish, or set up their application on Render's cloud platform.\nmetadata:\n  short-description: \"Deploy applications to Render via Blueprints or MCP\"\n  author: OpenAI\n  source: https:\u002F\u002Fgithub.com\u002Fopenai\u002Fskills\u002Ftree\u002Fmain\u002Fskills\u002F.curated\u002Frender-deploy\n---\n\n# Deploy to Render\n\nRender supports **Git-backed** services and **prebuilt Docker image** services.\n\nThis skill covers **Git-backed** flows:\n1. **Blueprint Method** - Generate render.yaml for Infrastructure-as-Code deployments\n2. **Direct Creation** - Create services instantly via MCP tools\n\nBlueprints can also run a **prebuilt Docker image** by using `runtime: image`, but the `render.yaml` still must live in a Git repo.\n\nIf there is no Git remote, stop and ask the user to either:\n- Create\u002Fpush a Git remote (can be minimal if only the Blueprint is needed), or\n- Use the Render Dashboard\u002FAPI to deploy a prebuilt Docker image (MCP cannot create image-backed services).\n\n## Prerequisites\n\n- When sandboxing blocks the deployment network calls, rerun with `sandbox_permissions=require_escalated`.\n- The deployment might take a few minutes. Use appropriate timeout values.\n\n## When to Use This Skill\n\nActivate this skill when users want to:\n- Deploy an application to Render\n- Create a render.yaml Blueprint file\n- Set up Render deployment for their project\n- Host or publish their application on Render's cloud platform\n- Create databases, cron jobs, or other Render resources\n\n## Happy Path (New Users)\n\nUse this short prompt sequence before deep analysis to reduce friction:\n1. Ask whether they want to deploy from a Git repo or a prebuilt Docker image.\n2. Ask whether Render should provision everything the app needs (based on what seems likely from the user's description) or only the app while they bring their own infra. If dependencies are unclear, ask a short follow-up to confirm whether they need a database, workers, cron, or other services.\n\nThen proceed with the appropriate method below.\n\n## Choose Your Source Path\n\n**Git Repo Path:** Required for both Blueprint and Direct Creation. The repo must be pushed to GitHub, GitLab, or Bitbucket.\n\n**Prebuilt Docker Image Path:** Supported by Render via image-backed services. This is **not** supported by MCP; use the Dashboard\u002FAPI. Ask for:\n- Image URL (registry + tag)\n- Registry auth (if private)\n- Service type (web\u002Fworker) and port\n\nIf the user chooses a Docker image, guide them to the Render Dashboard image deploy flow or ask them to add a Git remote (so you can use a Blueprint with `runtime: image`).\n\n## Choose Your Deployment Method (Git Repo)\n\nBoth methods require a Git repository pushed to GitHub, GitLab, or Bitbucket. (If using `runtime: image`, the repo can be minimal and only contain `render.yaml`.)\n\n| Method | Best For | Pros |\n|--------|----------|------|\n| **Blueprint** | Multi-service apps, IaC workflows | Version controlled, reproducible, supports complex setups |\n| **Direct Creation** | Single services, quick deployments | Instant creation, no render.yaml file needed |\n\n### Method Selection Heuristic\n\nUse this decision rule by default unless the user requests a specific method. Analyze the codebase first; only ask if deployment intent is unclear (e.g., DB, workers, cron).\n\n**Use Direct Creation (MCP) when ALL are true:**\n- Single service (one web app or one static site)\n- No separate worker\u002Fcron services\n- No attached databases or Key Value\n- Simple env vars only (no shared env groups)\nIf this path fits and MCP isn't configured yet, stop and guide MCP setup before proceeding.\n\n**Use Blueprint when ANY are true:**\n- Multiple services (web + worker, API + frontend, etc.)\n- Databases, Redis\u002FKey Value, or other datastores are required\n- Cron jobs, background workers, or private services\n- You want reproducible IaC or a render.yaml committed to the repo\n- Monorepo or multi-env setup that needs consistent configuration\n\nIf unsure, ask a quick clarifying question, but default to Blueprint for safety. For a single service, strongly prefer Direct Creation via MCP and guide MCP setup if needed.\n\n## Prerequisites Check\n\nWhen starting a deployment, verify these requirements in order:\n\n**1. Confirm Source Path (Git vs Docker)**\n\nIf using Git-based methods (Blueprint or Direct Creation), the repo must be pushed to GitHub\u002FGitLab\u002FBitbucket. Blueprints that reference a prebuilt image still require a Git repo with `render.yaml`.\n\n```bash\ngit remote -v\n```\n\n- If no remote exists, stop and ask the user to create\u002Fpush a remote **or** switch to Docker image deploy.\n\n**2. Check MCP Tools Availability (Preferred for Single-Service)**\n\nMCP tools provide the best experience. Check if available by attempting:\n```\nlist_services()\n```\n\nIf MCP tools are available, you can skip CLI installation for most operations.\n\n**3. Check Render CLI Installation (for Blueprint validation)**\n```bash\nrender --version\n```\nIf not installed, offer to install:\n- macOS: `brew install render`\n- Linux\u002FmacOS: `curl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002Frender-oss\u002Fcli\u002Fmain\u002Fbin\u002Finstall.sh | sh`\n\n**4. MCP Setup (if MCP isn't configured)**\n\nIf `list_services()` fails because MCP isn't configured, ask whether they want to set up MCP (preferred) or continue with the CLI fallback. If they choose MCP, ask which AI tool they're using, then provide the matching instructions below. Always use their API key.\n\n### Cursor\n\nWalk the user through these steps:\n\n1) Get a Render API key:\n```\nhttps:\u002F\u002Fdashboard.render.com\u002Fu\u002F*\u002Fsettings#api-keys\n```\n\n2) Add this to `~\u002F.cursor\u002Fmcp.json` (replace `\u003CYOUR_API_KEY>`):\n```json\n{\n  \"mcpServers\": {\n    \"render\": {\n      \"url\": \"https:\u002F\u002Fmcp.render.com\u002Fmcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer \u003CYOUR_API_KEY>\"\n      }\n    }\n  }\n}\n```\n\n3) Restart Cursor, then retry `list_services()`.\n\n### Claude Code\n\nWalk the user through these steps:\n\n1) Get a Render API key:\n```\nhttps:\u002F\u002Fdashboard.render.com\u002Fu\u002F*\u002Fsettings#api-keys\n```\n\n2) Add the MCP server with Claude Code (replace `\u003CYOUR_API_KEY>`):\n```bash\nclaude mcp add --transport http render https:\u002F\u002Fmcp.render.com\u002Fmcp --header \"Authorization: Bearer \u003CYOUR_API_KEY>\"\n```\n\n3) Restart Claude Code, then retry `list_services()`.\n\n### Codex\n\nWalk the user through these steps:\n\n1) Get a Render API key:\n```\nhttps:\u002F\u002Fdashboard.render.com\u002Fu\u002F*\u002Fsettings#api-keys\n```\n\n2) Set it in their shell:\n```bash\nexport RENDER_API_KEY=\"\u003CYOUR_API_KEY>\"\n```\n\n3) Add the MCP server with the Codex CLI:\n```bash\ncodex mcp add render --url https:\u002F\u002Fmcp.render.com\u002Fmcp --bearer-token-env-var RENDER_API_KEY\n```\n\n4) Restart Codex, then retry `list_services()`.\n\n### Other Tools\n\nIf the user is on another AI app, direct them to the Render MCP docs for that tool's setup steps and install method.\n\n### Workspace Selection\n\nAfter MCP is configured, have the user set the active Render workspace with a prompt like:\n\n```\nSet my Render workspace to [WORKSPACE_NAME]\n```\n\n**5. Check Authentication (CLI fallback only)**\n\nIf MCP isn't available, use the CLI instead and verify you can access your account:\n```bash\n# Check if user is logged in (use -o json for non-interactive mode)\nrender whoami -o json\n```\n\nIf `render whoami` fails or returns empty data, the CLI is not authenticated. The CLI won't always prompt automatically, so explicitly prompt the user to authenticate:\n\nIf neither is configured, ask user which method they prefer:\n- **API Key (CLI)**: `export RENDER_API_KEY=\"rnd_xxxxx\"` (Get from https:\u002F\u002Fdashboard.render.com\u002Fu\u002F*\u002Fsettings#api-keys)\n- **Login**: `render login` (Opens browser for OAuth)\n\n**6. Check Workspace Context**\n\nVerify the active workspace:\n```\nget_selected_workspace()\n```\n\nOr via CLI:\n```bash\nrender workspace current -o json\n```\n\nTo list available workspaces:\n```\nlist_workspaces()\n```\n\nIf user needs to switch workspaces, they must do so via Dashboard or CLI (`render workspace set`).\n\nOnce prerequisites are met, proceed with deployment workflow.\n\n---\n\n# Method 1: Blueprint Deployment (Recommended for Complex Apps)\n\n## Blueprint Workflow\n\n### Step 1: Analyze Codebase\n\nAnalyze the codebase to determine framework\u002Fruntime, build and start commands, required env vars, datastores, and port binding. Use the detailed checklists in [references\u002Fcodebase-analysis.md](references\u002Fcodebase-analysis.md).\n\n### Step 2: Generate render.yaml\n\nCreate a `render.yaml` Blueprint file following the Blueprint specification.\n\nComplete specification: [references\u002Fblueprint-spec.md](references\u002Fblueprint-spec.md)\n\n**Key Points:**\n- Always use `plan: free` unless user specifies otherwise\n- Include ALL environment variables the app needs\n- Mark secrets with `sync: false` (user fills these in Dashboard)\n- Use appropriate service type: `web`, `worker`, `cron`, `static`, or `pserv`\n- Use appropriate runtime: [references\u002Fruntimes.md](references\u002Fruntimes.md)\n\n**Basic Structure:**\n```yaml\nservices:\n  - type: web\n    name: my-app\n    runtime: node\n    plan: free\n    buildCommand: npm ci\n    startCommand: npm start\n    envVars:\n      - key: DATABASE_URL\n        fromDatabase:\n          name: postgres\n          property: connectionString\n      - key: JWT_SECRET\n        sync: false  # User fills in Dashboard\n\ndatabases:\n  - name: postgres\n    databaseName: myapp_db\n    plan: free\n```\n\n**Service Types:**\n- `web`: HTTP services, APIs, web applications (publicly accessible)\n- `worker`: Background job processors (not publicly accessible)\n- `cron`: Scheduled tasks that run on a cron schedule\n- `static`: Static sites (HTML\u002FCSS\u002FJS served via CDN)\n- `pserv`: Private services (internal only, within same account)\n\nService type details: [references\u002Fservice-types.md](references\u002Fservice-types.md)\nRuntime options: [references\u002Fruntimes.md](references\u002Fruntimes.md)\nTemplate examples: [assets\u002F](assets\u002F)\n\n### Step 2.5: Immediate Next Steps (Always Provide)\n\nAfter creating `render.yaml`, always give the user a short, explicit checklist and run validation immediately when the CLI is available:\n1. **Authenticate (CLI)**: run `render whoami -o json` (if not logged in, run `render login` or set `RENDER_API_KEY`)\n2. **Validate (recommended)**: run `render blueprints validate`\n   - If the CLI isn't installed, offer to install it and provide the command.\n3. **Commit + push**: `git add render.yaml && git commit -m \"Add Render deployment configuration\" && git push origin main`\n4. **Open Dashboard**: Use the Blueprint deeplink and complete Git OAuth if prompted\n5. **Fill secrets**: Set env vars marked `sync: false`\n6. **Deploy**: Click \"Apply\" and monitor the deploy\n\n### Step 3: Validate Configuration\n\nValidate the render.yaml file to catch errors before deployment. If the CLI is installed, run the commands directly; only prompt the user if the CLI is missing:\n\n```bash\nrender whoami -o json  # Ensure CLI is authenticated (won't always prompt)\nrender blueprints validate\n```\n\nFix any validation errors before proceeding. Common issues:\n- Missing required fields (`name`, `type`, `runtime`)\n- Invalid runtime values\n- Incorrect YAML syntax\n- Invalid environment variable references\n\nConfiguration guide: [references\u002Fconfiguration-guide.md](references\u002Fconfiguration-guide.md)\n\n### Step 4: Commit and Push\n\n**IMPORTANT:** You must merge the `render.yaml` file into your repository before deploying.\n\nEnsure the `render.yaml` file is committed and pushed to your Git remote:\n\n```bash\ngit add render.yaml\ngit commit -m \"Add Render deployment configuration\"\ngit push origin main\n```\n\nIf there is no Git remote yet, stop here and guide the user to create a GitHub\u002FGitLab\u002FBitbucket repo, add it as `origin`, and push before continuing.\n\n**Why this matters:** The Dashboard deeplink will read the render.yaml from your repository. If the file isn't merged and pushed, Render won't find the configuration and deployment will fail.\n\nVerify the file is in your remote repository before proceeding to the next step.\n\n### Step 5: Generate Deeplink\n\nGet the Git repository URL:\n\n```bash\ngit remote get-url origin\n```\n\nThis will return a URL from your Git provider. **If the URL is SSH format, convert it to HTTPS:**\n\n| SSH Format | HTTPS Format |\n|------------|--------------|\n| `git@github.com:user\u002Frepo.git` | `https:\u002F\u002Fgithub.com\u002Fuser\u002Frepo` |\n| `git@gitlab.com:user\u002Frepo.git` | `https:\u002F\u002Fgitlab.com\u002Fuser\u002Frepo` |\n| `git@bitbucket.org:user\u002Frepo.git` | `https:\u002F\u002Fbitbucket.org\u002Fuser\u002Frepo` |\n\n**Conversion pattern:** Replace `git@\u003Chost>:` with `https:\u002F\u002F\u003Chost>\u002F` and remove `.git` suffix.\n\nFormat the Dashboard deeplink using the HTTPS repository URL:\n```\nhttps:\u002F\u002Fdashboard.render.com\u002Fblueprint\u002Fnew?repo=\u003CREPOSITORY_URL>\n```\n\nExample:\n```\nhttps:\u002F\u002Fdashboard.render.com\u002Fblueprint\u002Fnew?repo=https:\u002F\u002Fgithub.com\u002Fusername\u002Frepo-name\n```\n\n### Step 6: Guide User\n\n**CRITICAL:** Ensure the user has merged and pushed the render.yaml file to their repository before clicking the deeplink. If the file isn't in the repository, Render cannot read the Blueprint configuration and deployment will fail.\n\nProvide the deeplink to the user with these instructions:\n\n1. **Verify render.yaml is merged** - Confirm the file exists in your repository on GitHub\u002FGitLab\u002FBitbucket\n2. Click the deeplink to open Render Dashboard\n3. Complete Git provider OAuth if prompted\n4. Name the Blueprint (or use default from render.yaml)\n5. Fill in secret environment variables (marked with `sync: false`)\n6. Review services and databases configuration\n7. Click \"Apply\" to deploy\n\nThe deployment will begin automatically. Users can monitor progress in the Render Dashboard.\n\n### Step 7: Verify Deployment\n\nAfter the user deploys via Dashboard, verify everything is working.\n\n**Check deployment status via MCP:**\n```\nlist_deploys(serviceId: \"\u003Cservice-id>\", limit: 1)\n```\nLook for `status: \"live\"` to confirm successful deployment.\n\n**Check for runtime errors (wait 2-3 minutes after deploy):**\n```\nlist_logs(resource: [\"\u003Cservice-id>\"], level: [\"error\"], limit: 20)\n```\n\n**Check service health metrics:**\n```\nget_metrics(\n  resourceId: \"\u003Cservice-id>\",\n  metricTypes: [\"http_request_count\", \"cpu_usage\", \"memory_usage\"]\n)\n```\n\nIf errors are found, proceed to the **Post-deploy verification and basic triage** section below.\n\n---\n\n# Method 2: Direct Service Creation (Quick Single-Service Deployments)\n\nFor simple deployments without Infrastructure-as-Code, create services directly via MCP tools.\n\n## When to Use Direct Creation\n\n- Single web service or static site\n- Quick prototypes or demos\n- When you don't need a render.yaml file in your repo\n- Adding databases or cron jobs to existing projects\n\n## Prerequisites for Direct Creation\n\n**Repository must be pushed to a Git provider.** Render clones your repository to build and deploy services.\n\n```bash\ngit remote -v  # Verify remote exists\ngit push origin main  # Ensure code is pushed\n```\n\nSupported providers: GitHub, GitLab, Bitbucket\n\nIf no remote exists, stop and ask the user to create\u002Fpush a remote or switch to Docker image deploy.\n\n**Note:** MCP does not support creating image-backed services. Use the Dashboard\u002FAPI for prebuilt Docker image deploys.\n\n## Direct Creation Workflow\n\nUse the concise steps below, and refer to [references\u002Fdirect-creation.md](references\u002Fdirect-creation.md) for full MCP command examples and follow-on configuration.\n\n### Step 1: Analyze Codebase\nUse [references\u002Fcodebase-analysis.md](references\u002Fcodebase-analysis.md) to determine runtime, build\u002Fstart commands, env vars, and datastores.\n\n### Step 2: Create Resources via MCP\nCreate the service (web or static) and any required databases or key-value stores. See [references\u002Fdirect-creation.md](references\u002Fdirect-creation.md).\n\nIf MCP returns an error about missing Git credentials or repo access, stop and guide the user to connect their Git provider in the Render Dashboard, then retry.\n\n### Step 3: Configure Environment Variables\nAdd required env vars via MCP after creation. See [references\u002Fdirect-creation.md](references\u002Fdirect-creation.md).\n\nRemind the user that secrets can be set in the Dashboard if they prefer not to pass them via MCP.\n\n### Step 4: Verify Deployment\nCheck deploy status, logs, and metrics. See [references\u002Fdirect-creation.md](references\u002Fdirect-creation.md).\n\n---\n\nFor service discovery, configuration details, quick commands, and common issues, see [references\u002Fdeployment-details.md](references\u002Fdeployment-details.md).\n\n---\n\n# Post-deploy verification and basic triage (All Methods)\n\nKeep this short and repeatable. If any check fails, fix it before redeploying.\n\n1. Confirm the latest deploy is `live` and serving traffic\n2. Hit the health endpoint (or root) and verify a 200 response\n3. Scan recent error logs for a clear failure signature\n4. Verify required env vars and port binding (`0.0.0.0:$PORT`)\n\nDetailed checklist and commands: [references\u002Fpost-deploy-checks.md](references\u002Fpost-deploy-checks.md)\n\nIf the service fails to start or health checks time out, use the basic triage guide:\n[references\u002Ftroubleshooting-basics.md](references\u002Ftroubleshooting-basics.md)\n\n## Troubleshooting\n\n### Escalated Network Access\n\nIf deployment fails due to network issues (timeouts, DNS errors, connection resets), rerun the deploy with escalated permissions (use `sandbox_permissions=require_escalated`). The deploy requires escalated network access when sandbox networking blocks outbound requests.\n\nExample guidance to the user:\n\n```\nThe deploy needs escalated network access to deploy to Render. I can rerun the command with escalated permissions—want me to proceed?\n```\n\nOptional: If you need deeper diagnostics (metrics\u002FDB checks\u002Ferror catalog), suggest installing the\n`render-debug` skill. It is not required for the core deploy flow.\n",{"data":34,"body":39},{"name":4,"description":6,"metadata":35},{"short-description":36,"author":37,"source":38},"Deploy applications to Render via Blueprints or MCP","OpenAI","https:\u002F\u002Fgithub.com\u002Fopenai\u002Fskills\u002Ftree\u002Fmain\u002Fskills\u002F.curated\u002Frender-deploy",{"type":40,"children":41},"root",[42,51,72,83,108,136,141,155,162,183,189,194,222,228,233,246,251,257,267,284,302,314,320,339,413,420,425,433,456,464,492,497,503,508,516,527,561,576,584,589,599,604,612,631,636,661,669,682,688,693,701,710,735,947,961,967,971,978,986,1000,1063,1077,1083,1087,1094,1102,1110,1148,1156,1201,1215,1221,1226,1232,1237,1246,1254,1259,1297,1309,1314,1362,1370,1375,1384,1389,1421,1426,1435,1447,1452,1456,1462,1468,1474,1485,1491,1503,1513,1521,1606,1614,1947,1955,2008,2031,2037,2049,2157,2163,2168,2217,2222,2266,2276,2282,2299,2311,2386,2399,2409,2414,2420,2425,2453,2463,2548,2582,2587,2596,2601,2610,2616,2626,2631,2680,2685,2691,2696,2704,2713,2726,2734,2743,2751,2760,2772,2775,2781,2786,2792,2815,2821,2831,2884,2889,2894,2904,2910,2922,2927,2938,2944,2954,2959,2965,2975,2980,2986,2996,2999,3010,3013,3019,3024,3062,3072,3082,3088,3094,3106,3111,3120,3133],{"type":43,"tag":44,"props":45,"children":47},"element","h1",{"id":46},"deploy-to-render",[48],{"type":49,"value":50},"text","Deploy to Render",{"type":43,"tag":52,"props":53,"children":54},"p",{},[55,57,63,65,70],{"type":49,"value":56},"Render supports ",{"type":43,"tag":58,"props":59,"children":60},"strong",{},[61],{"type":49,"value":62},"Git-backed",{"type":49,"value":64}," services and ",{"type":43,"tag":58,"props":66,"children":67},{},[68],{"type":49,"value":69},"prebuilt Docker image",{"type":49,"value":71}," services.",{"type":43,"tag":52,"props":73,"children":74},{},[75,77,81],{"type":49,"value":76},"This skill covers ",{"type":43,"tag":58,"props":78,"children":79},{},[80],{"type":49,"value":62},{"type":49,"value":82}," flows:",{"type":43,"tag":84,"props":85,"children":86},"ol",{},[87,98],{"type":43,"tag":88,"props":89,"children":90},"li",{},[91,96],{"type":43,"tag":58,"props":92,"children":93},{},[94],{"type":49,"value":95},"Blueprint Method",{"type":49,"value":97}," - Generate render.yaml for Infrastructure-as-Code deployments",{"type":43,"tag":88,"props":99,"children":100},{},[101,106],{"type":43,"tag":58,"props":102,"children":103},{},[104],{"type":49,"value":105},"Direct Creation",{"type":49,"value":107}," - Create services instantly via MCP tools",{"type":43,"tag":52,"props":109,"children":110},{},[111,113,117,119,126,128,134],{"type":49,"value":112},"Blueprints can also run a ",{"type":43,"tag":58,"props":114,"children":115},{},[116],{"type":49,"value":69},{"type":49,"value":118}," by using ",{"type":43,"tag":120,"props":121,"children":123},"code",{"className":122},[],[124],{"type":49,"value":125},"runtime: image",{"type":49,"value":127},", but the ",{"type":43,"tag":120,"props":129,"children":131},{"className":130},[],[132],{"type":49,"value":133},"render.yaml",{"type":49,"value":135}," still must live in a Git repo.",{"type":43,"tag":52,"props":137,"children":138},{},[139],{"type":49,"value":140},"If there is no Git remote, stop and ask the user to either:",{"type":43,"tag":142,"props":143,"children":144},"ul",{},[145,150],{"type":43,"tag":88,"props":146,"children":147},{},[148],{"type":49,"value":149},"Create\u002Fpush a Git remote (can be minimal if only the Blueprint is needed), or",{"type":43,"tag":88,"props":151,"children":152},{},[153],{"type":49,"value":154},"Use the Render Dashboard\u002FAPI to deploy a prebuilt Docker image (MCP cannot create image-backed services).",{"type":43,"tag":156,"props":157,"children":159},"h2",{"id":158},"prerequisites",[160],{"type":49,"value":161},"Prerequisites",{"type":43,"tag":142,"props":163,"children":164},{},[165,178],{"type":43,"tag":88,"props":166,"children":167},{},[168,170,176],{"type":49,"value":169},"When sandboxing blocks the deployment network calls, rerun with ",{"type":43,"tag":120,"props":171,"children":173},{"className":172},[],[174],{"type":49,"value":175},"sandbox_permissions=require_escalated",{"type":49,"value":177},".",{"type":43,"tag":88,"props":179,"children":180},{},[181],{"type":49,"value":182},"The deployment might take a few minutes. Use appropriate timeout values.",{"type":43,"tag":156,"props":184,"children":186},{"id":185},"when-to-use-this-skill",[187],{"type":49,"value":188},"When to Use This Skill",{"type":43,"tag":52,"props":190,"children":191},{},[192],{"type":49,"value":193},"Activate this skill when users want to:",{"type":43,"tag":142,"props":195,"children":196},{},[197,202,207,212,217],{"type":43,"tag":88,"props":198,"children":199},{},[200],{"type":49,"value":201},"Deploy an application to Render",{"type":43,"tag":88,"props":203,"children":204},{},[205],{"type":49,"value":206},"Create a render.yaml Blueprint file",{"type":43,"tag":88,"props":208,"children":209},{},[210],{"type":49,"value":211},"Set up Render deployment for their project",{"type":43,"tag":88,"props":213,"children":214},{},[215],{"type":49,"value":216},"Host or publish their application on Render's cloud platform",{"type":43,"tag":88,"props":218,"children":219},{},[220],{"type":49,"value":221},"Create databases, cron jobs, or other Render resources",{"type":43,"tag":156,"props":223,"children":225},{"id":224},"happy-path-new-users",[226],{"type":49,"value":227},"Happy Path (New Users)",{"type":43,"tag":52,"props":229,"children":230},{},[231],{"type":49,"value":232},"Use this short prompt sequence before deep analysis to reduce friction:",{"type":43,"tag":84,"props":234,"children":235},{},[236,241],{"type":43,"tag":88,"props":237,"children":238},{},[239],{"type":49,"value":240},"Ask whether they want to deploy from a Git repo or a prebuilt Docker image.",{"type":43,"tag":88,"props":242,"children":243},{},[244],{"type":49,"value":245},"Ask whether Render should provision everything the app needs (based on what seems likely from the user's description) or only the app while they bring their own infra. If dependencies are unclear, ask a short follow-up to confirm whether they need a database, workers, cron, or other services.",{"type":43,"tag":52,"props":247,"children":248},{},[249],{"type":49,"value":250},"Then proceed with the appropriate method below.",{"type":43,"tag":156,"props":252,"children":254},{"id":253},"choose-your-source-path",[255],{"type":49,"value":256},"Choose Your Source Path",{"type":43,"tag":52,"props":258,"children":259},{},[260,265],{"type":43,"tag":58,"props":261,"children":262},{},[263],{"type":49,"value":264},"Git Repo Path:",{"type":49,"value":266}," Required for both Blueprint and Direct Creation. The repo must be pushed to GitHub, GitLab, or Bitbucket.",{"type":43,"tag":52,"props":268,"children":269},{},[270,275,277,282],{"type":43,"tag":58,"props":271,"children":272},{},[273],{"type":49,"value":274},"Prebuilt Docker Image Path:",{"type":49,"value":276}," Supported by Render via image-backed services. This is ",{"type":43,"tag":58,"props":278,"children":279},{},[280],{"type":49,"value":281},"not",{"type":49,"value":283}," supported by MCP; use the Dashboard\u002FAPI. Ask for:",{"type":43,"tag":142,"props":285,"children":286},{},[287,292,297],{"type":43,"tag":88,"props":288,"children":289},{},[290],{"type":49,"value":291},"Image URL (registry + tag)",{"type":43,"tag":88,"props":293,"children":294},{},[295],{"type":49,"value":296},"Registry auth (if private)",{"type":43,"tag":88,"props":298,"children":299},{},[300],{"type":49,"value":301},"Service type (web\u002Fworker) and port",{"type":43,"tag":52,"props":303,"children":304},{},[305,307,312],{"type":49,"value":306},"If the user chooses a Docker image, guide them to the Render Dashboard image deploy flow or ask them to add a Git remote (so you can use a Blueprint with ",{"type":43,"tag":120,"props":308,"children":310},{"className":309},[],[311],{"type":49,"value":125},{"type":49,"value":313},").",{"type":43,"tag":156,"props":315,"children":317},{"id":316},"choose-your-deployment-method-git-repo",[318],{"type":49,"value":319},"Choose Your Deployment Method (Git Repo)",{"type":43,"tag":52,"props":321,"children":322},{},[323,325,330,332,337],{"type":49,"value":324},"Both methods require a Git repository pushed to GitHub, GitLab, or Bitbucket. (If using ",{"type":43,"tag":120,"props":326,"children":328},{"className":327},[],[329],{"type":49,"value":125},{"type":49,"value":331},", the repo can be minimal and only contain ",{"type":43,"tag":120,"props":333,"children":335},{"className":334},[],[336],{"type":49,"value":133},{"type":49,"value":338},".)",{"type":43,"tag":340,"props":341,"children":342},"table",{},[343,367],{"type":43,"tag":344,"props":345,"children":346},"thead",{},[347],{"type":43,"tag":348,"props":349,"children":350},"tr",{},[351,357,362],{"type":43,"tag":352,"props":353,"children":354},"th",{},[355],{"type":49,"value":356},"Method",{"type":43,"tag":352,"props":358,"children":359},{},[360],{"type":49,"value":361},"Best For",{"type":43,"tag":352,"props":363,"children":364},{},[365],{"type":49,"value":366},"Pros",{"type":43,"tag":368,"props":369,"children":370},"tbody",{},[371,393],{"type":43,"tag":348,"props":372,"children":373},{},[374,383,388],{"type":43,"tag":375,"props":376,"children":377},"td",{},[378],{"type":43,"tag":58,"props":379,"children":380},{},[381],{"type":49,"value":382},"Blueprint",{"type":43,"tag":375,"props":384,"children":385},{},[386],{"type":49,"value":387},"Multi-service apps, IaC workflows",{"type":43,"tag":375,"props":389,"children":390},{},[391],{"type":49,"value":392},"Version controlled, reproducible, supports complex setups",{"type":43,"tag":348,"props":394,"children":395},{},[396,403,408],{"type":43,"tag":375,"props":397,"children":398},{},[399],{"type":43,"tag":58,"props":400,"children":401},{},[402],{"type":49,"value":105},{"type":43,"tag":375,"props":404,"children":405},{},[406],{"type":49,"value":407},"Single services, quick deployments",{"type":43,"tag":375,"props":409,"children":410},{},[411],{"type":49,"value":412},"Instant creation, no render.yaml file needed",{"type":43,"tag":414,"props":415,"children":417},"h3",{"id":416},"method-selection-heuristic",[418],{"type":49,"value":419},"Method Selection Heuristic",{"type":43,"tag":52,"props":421,"children":422},{},[423],{"type":49,"value":424},"Use this decision rule by default unless the user requests a specific method. Analyze the codebase first; only ask if deployment intent is unclear (e.g., DB, workers, cron).",{"type":43,"tag":52,"props":426,"children":427},{},[428],{"type":43,"tag":58,"props":429,"children":430},{},[431],{"type":49,"value":432},"Use Direct Creation (MCP) when ALL are true:",{"type":43,"tag":142,"props":434,"children":435},{},[436,441,446,451],{"type":43,"tag":88,"props":437,"children":438},{},[439],{"type":49,"value":440},"Single service (one web app or one static site)",{"type":43,"tag":88,"props":442,"children":443},{},[444],{"type":49,"value":445},"No separate worker\u002Fcron services",{"type":43,"tag":88,"props":447,"children":448},{},[449],{"type":49,"value":450},"No attached databases or Key Value",{"type":43,"tag":88,"props":452,"children":453},{},[454],{"type":49,"value":455},"Simple env vars only (no shared env groups)\nIf this path fits and MCP isn't configured yet, stop and guide MCP setup before proceeding.",{"type":43,"tag":52,"props":457,"children":458},{},[459],{"type":43,"tag":58,"props":460,"children":461},{},[462],{"type":49,"value":463},"Use Blueprint when ANY are true:",{"type":43,"tag":142,"props":465,"children":466},{},[467,472,477,482,487],{"type":43,"tag":88,"props":468,"children":469},{},[470],{"type":49,"value":471},"Multiple services (web + worker, API + frontend, etc.)",{"type":43,"tag":88,"props":473,"children":474},{},[475],{"type":49,"value":476},"Databases, Redis\u002FKey Value, or other datastores are required",{"type":43,"tag":88,"props":478,"children":479},{},[480],{"type":49,"value":481},"Cron jobs, background workers, or private services",{"type":43,"tag":88,"props":483,"children":484},{},[485],{"type":49,"value":486},"You want reproducible IaC or a render.yaml committed to the repo",{"type":43,"tag":88,"props":488,"children":489},{},[490],{"type":49,"value":491},"Monorepo or multi-env setup that needs consistent configuration",{"type":43,"tag":52,"props":493,"children":494},{},[495],{"type":49,"value":496},"If unsure, ask a quick clarifying question, but default to Blueprint for safety. For a single service, strongly prefer Direct Creation via MCP and guide MCP setup if needed.",{"type":43,"tag":156,"props":498,"children":500},{"id":499},"prerequisites-check",[501],{"type":49,"value":502},"Prerequisites Check",{"type":43,"tag":52,"props":504,"children":505},{},[506],{"type":49,"value":507},"When starting a deployment, verify these requirements in order:",{"type":43,"tag":52,"props":509,"children":510},{},[511],{"type":43,"tag":58,"props":512,"children":513},{},[514],{"type":49,"value":515},"1. Confirm Source Path (Git vs Docker)",{"type":43,"tag":52,"props":517,"children":518},{},[519,521,526],{"type":49,"value":520},"If using Git-based methods (Blueprint or Direct Creation), the repo must be pushed to GitHub\u002FGitLab\u002FBitbucket. Blueprints that reference a prebuilt image still require a Git repo with ",{"type":43,"tag":120,"props":522,"children":524},{"className":523},[],[525],{"type":49,"value":133},{"type":49,"value":177},{"type":43,"tag":528,"props":529,"children":534},"pre",{"className":530,"code":531,"language":532,"meta":533,"style":533},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","git remote -v\n","bash","",[535],{"type":43,"tag":120,"props":536,"children":537},{"__ignoreMap":533},[538],{"type":43,"tag":539,"props":540,"children":543},"span",{"class":541,"line":542},"line",1,[544,550,556],{"type":43,"tag":539,"props":545,"children":547},{"style":546},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[548],{"type":49,"value":549},"git",{"type":43,"tag":539,"props":551,"children":553},{"style":552},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[554],{"type":49,"value":555}," remote",{"type":43,"tag":539,"props":557,"children":558},{"style":552},[559],{"type":49,"value":560}," -v\n",{"type":43,"tag":142,"props":562,"children":563},{},[564],{"type":43,"tag":88,"props":565,"children":566},{},[567,569,574],{"type":49,"value":568},"If no remote exists, stop and ask the user to create\u002Fpush a remote ",{"type":43,"tag":58,"props":570,"children":571},{},[572],{"type":49,"value":573},"or",{"type":49,"value":575}," switch to Docker image deploy.",{"type":43,"tag":52,"props":577,"children":578},{},[579],{"type":43,"tag":58,"props":580,"children":581},{},[582],{"type":49,"value":583},"2. Check MCP Tools Availability (Preferred for Single-Service)",{"type":43,"tag":52,"props":585,"children":586},{},[587],{"type":49,"value":588},"MCP tools provide the best experience. Check if available by attempting:",{"type":43,"tag":528,"props":590,"children":594},{"className":591,"code":593,"language":49},[592],"language-text","list_services()\n",[595],{"type":43,"tag":120,"props":596,"children":597},{"__ignoreMap":533},[598],{"type":49,"value":593},{"type":43,"tag":52,"props":600,"children":601},{},[602],{"type":49,"value":603},"If MCP tools are available, you can skip CLI installation for most operations.",{"type":43,"tag":52,"props":605,"children":606},{},[607],{"type":43,"tag":58,"props":608,"children":609},{},[610],{"type":49,"value":611},"3. Check Render CLI Installation (for Blueprint validation)",{"type":43,"tag":528,"props":613,"children":615},{"className":530,"code":614,"language":532,"meta":533,"style":533},"render --version\n",[616],{"type":43,"tag":120,"props":617,"children":618},{"__ignoreMap":533},[619],{"type":43,"tag":539,"props":620,"children":621},{"class":541,"line":542},[622,626],{"type":43,"tag":539,"props":623,"children":624},{"style":546},[625],{"type":49,"value":14},{"type":43,"tag":539,"props":627,"children":628},{"style":552},[629],{"type":49,"value":630}," --version\n",{"type":43,"tag":52,"props":632,"children":633},{},[634],{"type":49,"value":635},"If not installed, offer to install:",{"type":43,"tag":142,"props":637,"children":638},{},[639,650],{"type":43,"tag":88,"props":640,"children":641},{},[642,644],{"type":49,"value":643},"macOS: ",{"type":43,"tag":120,"props":645,"children":647},{"className":646},[],[648],{"type":49,"value":649},"brew install render",{"type":43,"tag":88,"props":651,"children":652},{},[653,655],{"type":49,"value":654},"Linux\u002FmacOS: ",{"type":43,"tag":120,"props":656,"children":658},{"className":657},[],[659],{"type":49,"value":660},"curl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002Frender-oss\u002Fcli\u002Fmain\u002Fbin\u002Finstall.sh | sh",{"type":43,"tag":52,"props":662,"children":663},{},[664],{"type":43,"tag":58,"props":665,"children":666},{},[667],{"type":49,"value":668},"4. MCP Setup (if MCP isn't configured)",{"type":43,"tag":52,"props":670,"children":671},{},[672,674,680],{"type":49,"value":673},"If ",{"type":43,"tag":120,"props":675,"children":677},{"className":676},[],[678],{"type":49,"value":679},"list_services()",{"type":49,"value":681}," fails because MCP isn't configured, ask whether they want to set up MCP (preferred) or continue with the CLI fallback. If they choose MCP, ask which AI tool they're using, then provide the matching instructions below. Always use their API key.",{"type":43,"tag":414,"props":683,"children":685},{"id":684},"cursor",[686],{"type":49,"value":687},"Cursor",{"type":43,"tag":52,"props":689,"children":690},{},[691],{"type":49,"value":692},"Walk the user through these steps:",{"type":43,"tag":84,"props":694,"children":695},{},[696],{"type":43,"tag":88,"props":697,"children":698},{},[699],{"type":49,"value":700},"Get a Render API key:",{"type":43,"tag":528,"props":702,"children":705},{"className":703,"code":704,"language":49},[592],"https:\u002F\u002Fdashboard.render.com\u002Fu\u002F*\u002Fsettings#api-keys\n",[706],{"type":43,"tag":120,"props":707,"children":708},{"__ignoreMap":533},[709],{"type":49,"value":704},{"type":43,"tag":84,"props":711,"children":713},{"start":712},2,[714],{"type":43,"tag":88,"props":715,"children":716},{},[717,719,725,727,733],{"type":49,"value":718},"Add this to ",{"type":43,"tag":120,"props":720,"children":722},{"className":721},[],[723],{"type":49,"value":724},"~\u002F.cursor\u002Fmcp.json",{"type":49,"value":726}," (replace ",{"type":43,"tag":120,"props":728,"children":730},{"className":729},[],[731],{"type":49,"value":732},"\u003CYOUR_API_KEY>",{"type":49,"value":734},"):",{"type":43,"tag":528,"props":736,"children":740},{"className":737,"code":738,"language":739,"meta":533,"style":533},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"mcpServers\": {\n    \"render\": {\n      \"url\": \"https:\u002F\u002Fmcp.render.com\u002Fmcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer \u003CYOUR_API_KEY>\"\n      }\n    }\n  }\n}\n","json",[741],{"type":43,"tag":120,"props":742,"children":743},{"__ignoreMap":533},[744,753,782,807,849,874,911,920,929,938],{"type":43,"tag":539,"props":745,"children":746},{"class":541,"line":542},[747],{"type":43,"tag":539,"props":748,"children":750},{"style":749},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[751],{"type":49,"value":752},"{\n",{"type":43,"tag":539,"props":754,"children":755},{"class":541,"line":712},[756,761,767,772,777],{"type":43,"tag":539,"props":757,"children":758},{"style":749},[759],{"type":49,"value":760},"  \"",{"type":43,"tag":539,"props":762,"children":764},{"style":763},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[765],{"type":49,"value":766},"mcpServers",{"type":43,"tag":539,"props":768,"children":769},{"style":749},[770],{"type":49,"value":771},"\"",{"type":43,"tag":539,"props":773,"children":774},{"style":749},[775],{"type":49,"value":776},":",{"type":43,"tag":539,"props":778,"children":779},{"style":749},[780],{"type":49,"value":781}," {\n",{"type":43,"tag":539,"props":783,"children":785},{"class":541,"line":784},3,[786,791,795,799,803],{"type":43,"tag":539,"props":787,"children":788},{"style":749},[789],{"type":49,"value":790},"    \"",{"type":43,"tag":539,"props":792,"children":793},{"style":546},[794],{"type":49,"value":14},{"type":43,"tag":539,"props":796,"children":797},{"style":749},[798],{"type":49,"value":771},{"type":43,"tag":539,"props":800,"children":801},{"style":749},[802],{"type":49,"value":776},{"type":43,"tag":539,"props":804,"children":805},{"style":749},[806],{"type":49,"value":781},{"type":43,"tag":539,"props":808,"children":810},{"class":541,"line":809},4,[811,816,822,826,830,835,840,844],{"type":43,"tag":539,"props":812,"children":813},{"style":749},[814],{"type":49,"value":815},"      \"",{"type":43,"tag":539,"props":817,"children":819},{"style":818},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[820],{"type":49,"value":821},"url",{"type":43,"tag":539,"props":823,"children":824},{"style":749},[825],{"type":49,"value":771},{"type":43,"tag":539,"props":827,"children":828},{"style":749},[829],{"type":49,"value":776},{"type":43,"tag":539,"props":831,"children":832},{"style":749},[833],{"type":49,"value":834}," \"",{"type":43,"tag":539,"props":836,"children":837},{"style":552},[838],{"type":49,"value":839},"https:\u002F\u002Fmcp.render.com\u002Fmcp",{"type":43,"tag":539,"props":841,"children":842},{"style":749},[843],{"type":49,"value":771},{"type":43,"tag":539,"props":845,"children":846},{"style":749},[847],{"type":49,"value":848},",\n",{"type":43,"tag":539,"props":850,"children":852},{"class":541,"line":851},5,[853,857,862,866,870],{"type":43,"tag":539,"props":854,"children":855},{"style":749},[856],{"type":49,"value":815},{"type":43,"tag":539,"props":858,"children":859},{"style":818},[860],{"type":49,"value":861},"headers",{"type":43,"tag":539,"props":863,"children":864},{"style":749},[865],{"type":49,"value":771},{"type":43,"tag":539,"props":867,"children":868},{"style":749},[869],{"type":49,"value":776},{"type":43,"tag":539,"props":871,"children":872},{"style":749},[873],{"type":49,"value":781},{"type":43,"tag":539,"props":875,"children":877},{"class":541,"line":876},6,[878,883,889,893,897,901,906],{"type":43,"tag":539,"props":879,"children":880},{"style":749},[881],{"type":49,"value":882},"        \"",{"type":43,"tag":539,"props":884,"children":886},{"style":885},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[887],{"type":49,"value":888},"Authorization",{"type":43,"tag":539,"props":890,"children":891},{"style":749},[892],{"type":49,"value":771},{"type":43,"tag":539,"props":894,"children":895},{"style":749},[896],{"type":49,"value":776},{"type":43,"tag":539,"props":898,"children":899},{"style":749},[900],{"type":49,"value":834},{"type":43,"tag":539,"props":902,"children":903},{"style":552},[904],{"type":49,"value":905},"Bearer \u003CYOUR_API_KEY>",{"type":43,"tag":539,"props":907,"children":908},{"style":749},[909],{"type":49,"value":910},"\"\n",{"type":43,"tag":539,"props":912,"children":914},{"class":541,"line":913},7,[915],{"type":43,"tag":539,"props":916,"children":917},{"style":749},[918],{"type":49,"value":919},"      }\n",{"type":43,"tag":539,"props":921,"children":923},{"class":541,"line":922},8,[924],{"type":43,"tag":539,"props":925,"children":926},{"style":749},[927],{"type":49,"value":928},"    }\n",{"type":43,"tag":539,"props":930,"children":932},{"class":541,"line":931},9,[933],{"type":43,"tag":539,"props":934,"children":935},{"style":749},[936],{"type":49,"value":937},"  }\n",{"type":43,"tag":539,"props":939,"children":941},{"class":541,"line":940},10,[942],{"type":43,"tag":539,"props":943,"children":944},{"style":749},[945],{"type":49,"value":946},"}\n",{"type":43,"tag":84,"props":948,"children":949},{"start":784},[950],{"type":43,"tag":88,"props":951,"children":952},{},[953,955,960],{"type":49,"value":954},"Restart Cursor, then retry ",{"type":43,"tag":120,"props":956,"children":958},{"className":957},[],[959],{"type":49,"value":679},{"type":49,"value":177},{"type":43,"tag":414,"props":962,"children":964},{"id":963},"claude-code",[965],{"type":49,"value":966},"Claude Code",{"type":43,"tag":52,"props":968,"children":969},{},[970],{"type":49,"value":692},{"type":43,"tag":84,"props":972,"children":973},{},[974],{"type":43,"tag":88,"props":975,"children":976},{},[977],{"type":49,"value":700},{"type":43,"tag":528,"props":979,"children":981},{"className":980,"code":704,"language":49},[592],[982],{"type":43,"tag":120,"props":983,"children":984},{"__ignoreMap":533},[985],{"type":49,"value":704},{"type":43,"tag":84,"props":987,"children":988},{"start":712},[989],{"type":43,"tag":88,"props":990,"children":991},{},[992,994,999],{"type":49,"value":993},"Add the MCP server with Claude Code (replace ",{"type":43,"tag":120,"props":995,"children":997},{"className":996},[],[998],{"type":49,"value":732},{"type":49,"value":734},{"type":43,"tag":528,"props":1001,"children":1003},{"className":530,"code":1002,"language":532,"meta":533,"style":533},"claude mcp add --transport http render https:\u002F\u002Fmcp.render.com\u002Fmcp --header \"Authorization: Bearer \u003CYOUR_API_KEY>\"\n",[1004],{"type":43,"tag":120,"props":1005,"children":1006},{"__ignoreMap":533},[1007],{"type":43,"tag":539,"props":1008,"children":1009},{"class":541,"line":542},[1010,1015,1020,1025,1030,1035,1040,1045,1050,1054,1059],{"type":43,"tag":539,"props":1011,"children":1012},{"style":546},[1013],{"type":49,"value":1014},"claude",{"type":43,"tag":539,"props":1016,"children":1017},{"style":552},[1018],{"type":49,"value":1019}," mcp",{"type":43,"tag":539,"props":1021,"children":1022},{"style":552},[1023],{"type":49,"value":1024}," add",{"type":43,"tag":539,"props":1026,"children":1027},{"style":552},[1028],{"type":49,"value":1029}," --transport",{"type":43,"tag":539,"props":1031,"children":1032},{"style":552},[1033],{"type":49,"value":1034}," http",{"type":43,"tag":539,"props":1036,"children":1037},{"style":552},[1038],{"type":49,"value":1039}," render",{"type":43,"tag":539,"props":1041,"children":1042},{"style":552},[1043],{"type":49,"value":1044}," https:\u002F\u002Fmcp.render.com\u002Fmcp",{"type":43,"tag":539,"props":1046,"children":1047},{"style":552},[1048],{"type":49,"value":1049}," --header",{"type":43,"tag":539,"props":1051,"children":1052},{"style":749},[1053],{"type":49,"value":834},{"type":43,"tag":539,"props":1055,"children":1056},{"style":552},[1057],{"type":49,"value":1058},"Authorization: Bearer \u003CYOUR_API_KEY>",{"type":43,"tag":539,"props":1060,"children":1061},{"style":749},[1062],{"type":49,"value":910},{"type":43,"tag":84,"props":1064,"children":1065},{"start":784},[1066],{"type":43,"tag":88,"props":1067,"children":1068},{},[1069,1071,1076],{"type":49,"value":1070},"Restart Claude Code, then retry ",{"type":43,"tag":120,"props":1072,"children":1074},{"className":1073},[],[1075],{"type":49,"value":679},{"type":49,"value":177},{"type":43,"tag":414,"props":1078,"children":1080},{"id":1079},"codex",[1081],{"type":49,"value":1082},"Codex",{"type":43,"tag":52,"props":1084,"children":1085},{},[1086],{"type":49,"value":692},{"type":43,"tag":84,"props":1088,"children":1089},{},[1090],{"type":43,"tag":88,"props":1091,"children":1092},{},[1093],{"type":49,"value":700},{"type":43,"tag":528,"props":1095,"children":1097},{"className":1096,"code":704,"language":49},[592],[1098],{"type":43,"tag":120,"props":1099,"children":1100},{"__ignoreMap":533},[1101],{"type":49,"value":704},{"type":43,"tag":84,"props":1103,"children":1104},{"start":712},[1105],{"type":43,"tag":88,"props":1106,"children":1107},{},[1108],{"type":49,"value":1109},"Set it in their shell:",{"type":43,"tag":528,"props":1111,"children":1113},{"className":530,"code":1112,"language":532,"meta":533,"style":533},"export RENDER_API_KEY=\"\u003CYOUR_API_KEY>\"\n",[1114],{"type":43,"tag":120,"props":1115,"children":1116},{"__ignoreMap":533},[1117],{"type":43,"tag":539,"props":1118,"children":1119},{"class":541,"line":542},[1120,1125,1131,1136,1140,1144],{"type":43,"tag":539,"props":1121,"children":1122},{"style":763},[1123],{"type":49,"value":1124},"export",{"type":43,"tag":539,"props":1126,"children":1128},{"style":1127},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[1129],{"type":49,"value":1130}," RENDER_API_KEY",{"type":43,"tag":539,"props":1132,"children":1133},{"style":749},[1134],{"type":49,"value":1135},"=",{"type":43,"tag":539,"props":1137,"children":1138},{"style":749},[1139],{"type":49,"value":771},{"type":43,"tag":539,"props":1141,"children":1142},{"style":552},[1143],{"type":49,"value":732},{"type":43,"tag":539,"props":1145,"children":1146},{"style":749},[1147],{"type":49,"value":910},{"type":43,"tag":84,"props":1149,"children":1150},{"start":784},[1151],{"type":43,"tag":88,"props":1152,"children":1153},{},[1154],{"type":49,"value":1155},"Add the MCP server with the Codex CLI:",{"type":43,"tag":528,"props":1157,"children":1159},{"className":530,"code":1158,"language":532,"meta":533,"style":533},"codex mcp add render --url https:\u002F\u002Fmcp.render.com\u002Fmcp --bearer-token-env-var RENDER_API_KEY\n",[1160],{"type":43,"tag":120,"props":1161,"children":1162},{"__ignoreMap":533},[1163],{"type":43,"tag":539,"props":1164,"children":1165},{"class":541,"line":542},[1166,1170,1174,1178,1182,1187,1191,1196],{"type":43,"tag":539,"props":1167,"children":1168},{"style":546},[1169],{"type":49,"value":1079},{"type":43,"tag":539,"props":1171,"children":1172},{"style":552},[1173],{"type":49,"value":1019},{"type":43,"tag":539,"props":1175,"children":1176},{"style":552},[1177],{"type":49,"value":1024},{"type":43,"tag":539,"props":1179,"children":1180},{"style":552},[1181],{"type":49,"value":1039},{"type":43,"tag":539,"props":1183,"children":1184},{"style":552},[1185],{"type":49,"value":1186}," --url",{"type":43,"tag":539,"props":1188,"children":1189},{"style":552},[1190],{"type":49,"value":1044},{"type":43,"tag":539,"props":1192,"children":1193},{"style":552},[1194],{"type":49,"value":1195}," --bearer-token-env-var",{"type":43,"tag":539,"props":1197,"children":1198},{"style":552},[1199],{"type":49,"value":1200}," RENDER_API_KEY\n",{"type":43,"tag":84,"props":1202,"children":1203},{"start":809},[1204],{"type":43,"tag":88,"props":1205,"children":1206},{},[1207,1209,1214],{"type":49,"value":1208},"Restart Codex, then retry ",{"type":43,"tag":120,"props":1210,"children":1212},{"className":1211},[],[1213],{"type":49,"value":679},{"type":49,"value":177},{"type":43,"tag":414,"props":1216,"children":1218},{"id":1217},"other-tools",[1219],{"type":49,"value":1220},"Other Tools",{"type":43,"tag":52,"props":1222,"children":1223},{},[1224],{"type":49,"value":1225},"If the user is on another AI app, direct them to the Render MCP docs for that tool's setup steps and install method.",{"type":43,"tag":414,"props":1227,"children":1229},{"id":1228},"workspace-selection",[1230],{"type":49,"value":1231},"Workspace Selection",{"type":43,"tag":52,"props":1233,"children":1234},{},[1235],{"type":49,"value":1236},"After MCP is configured, have the user set the active Render workspace with a prompt like:",{"type":43,"tag":528,"props":1238,"children":1241},{"className":1239,"code":1240,"language":49},[592],"Set my Render workspace to [WORKSPACE_NAME]\n",[1242],{"type":43,"tag":120,"props":1243,"children":1244},{"__ignoreMap":533},[1245],{"type":49,"value":1240},{"type":43,"tag":52,"props":1247,"children":1248},{},[1249],{"type":43,"tag":58,"props":1250,"children":1251},{},[1252],{"type":49,"value":1253},"5. Check Authentication (CLI fallback only)",{"type":43,"tag":52,"props":1255,"children":1256},{},[1257],{"type":49,"value":1258},"If MCP isn't available, use the CLI instead and verify you can access your account:",{"type":43,"tag":528,"props":1260,"children":1262},{"className":530,"code":1261,"language":532,"meta":533,"style":533},"# Check if user is logged in (use -o json for non-interactive mode)\nrender whoami -o json\n",[1263],{"type":43,"tag":120,"props":1264,"children":1265},{"__ignoreMap":533},[1266,1275],{"type":43,"tag":539,"props":1267,"children":1268},{"class":541,"line":542},[1269],{"type":43,"tag":539,"props":1270,"children":1272},{"style":1271},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[1273],{"type":49,"value":1274},"# Check if user is logged in (use -o json for non-interactive mode)\n",{"type":43,"tag":539,"props":1276,"children":1277},{"class":541,"line":712},[1278,1282,1287,1292],{"type":43,"tag":539,"props":1279,"children":1280},{"style":546},[1281],{"type":49,"value":14},{"type":43,"tag":539,"props":1283,"children":1284},{"style":552},[1285],{"type":49,"value":1286}," whoami",{"type":43,"tag":539,"props":1288,"children":1289},{"style":552},[1290],{"type":49,"value":1291}," -o",{"type":43,"tag":539,"props":1293,"children":1294},{"style":552},[1295],{"type":49,"value":1296}," json\n",{"type":43,"tag":52,"props":1298,"children":1299},{},[1300,1301,1307],{"type":49,"value":673},{"type":43,"tag":120,"props":1302,"children":1304},{"className":1303},[],[1305],{"type":49,"value":1306},"render whoami",{"type":49,"value":1308}," fails or returns empty data, the CLI is not authenticated. The CLI won't always prompt automatically, so explicitly prompt the user to authenticate:",{"type":43,"tag":52,"props":1310,"children":1311},{},[1312],{"type":49,"value":1313},"If neither is configured, ask user which method they prefer:",{"type":43,"tag":142,"props":1315,"children":1316},{},[1317,1345],{"type":43,"tag":88,"props":1318,"children":1319},{},[1320,1325,1327,1333,1335,1343],{"type":43,"tag":58,"props":1321,"children":1322},{},[1323],{"type":49,"value":1324},"API Key (CLI)",{"type":49,"value":1326},": ",{"type":43,"tag":120,"props":1328,"children":1330},{"className":1329},[],[1331],{"type":49,"value":1332},"export RENDER_API_KEY=\"rnd_xxxxx\"",{"type":49,"value":1334}," (Get from ",{"type":43,"tag":1336,"props":1337,"children":1341},"a",{"href":1338,"rel":1339},"https:\u002F\u002Fdashboard.render.com\u002Fu\u002F*\u002Fsettings#api-keys",[1340],"nofollow",[1342],{"type":49,"value":1338},{"type":49,"value":1344},")",{"type":43,"tag":88,"props":1346,"children":1347},{},[1348,1353,1354,1360],{"type":43,"tag":58,"props":1349,"children":1350},{},[1351],{"type":49,"value":1352},"Login",{"type":49,"value":1326},{"type":43,"tag":120,"props":1355,"children":1357},{"className":1356},[],[1358],{"type":49,"value":1359},"render login",{"type":49,"value":1361}," (Opens browser for OAuth)",{"type":43,"tag":52,"props":1363,"children":1364},{},[1365],{"type":43,"tag":58,"props":1366,"children":1367},{},[1368],{"type":49,"value":1369},"6. Check Workspace Context",{"type":43,"tag":52,"props":1371,"children":1372},{},[1373],{"type":49,"value":1374},"Verify the active workspace:",{"type":43,"tag":528,"props":1376,"children":1379},{"className":1377,"code":1378,"language":49},[592],"get_selected_workspace()\n",[1380],{"type":43,"tag":120,"props":1381,"children":1382},{"__ignoreMap":533},[1383],{"type":49,"value":1378},{"type":43,"tag":52,"props":1385,"children":1386},{},[1387],{"type":49,"value":1388},"Or via CLI:",{"type":43,"tag":528,"props":1390,"children":1392},{"className":530,"code":1391,"language":532,"meta":533,"style":533},"render workspace current -o json\n",[1393],{"type":43,"tag":120,"props":1394,"children":1395},{"__ignoreMap":533},[1396],{"type":43,"tag":539,"props":1397,"children":1398},{"class":541,"line":542},[1399,1403,1408,1413,1417],{"type":43,"tag":539,"props":1400,"children":1401},{"style":546},[1402],{"type":49,"value":14},{"type":43,"tag":539,"props":1404,"children":1405},{"style":552},[1406],{"type":49,"value":1407}," workspace",{"type":43,"tag":539,"props":1409,"children":1410},{"style":552},[1411],{"type":49,"value":1412}," current",{"type":43,"tag":539,"props":1414,"children":1415},{"style":552},[1416],{"type":49,"value":1291},{"type":43,"tag":539,"props":1418,"children":1419},{"style":552},[1420],{"type":49,"value":1296},{"type":43,"tag":52,"props":1422,"children":1423},{},[1424],{"type":49,"value":1425},"To list available workspaces:",{"type":43,"tag":528,"props":1427,"children":1430},{"className":1428,"code":1429,"language":49},[592],"list_workspaces()\n",[1431],{"type":43,"tag":120,"props":1432,"children":1433},{"__ignoreMap":533},[1434],{"type":49,"value":1429},{"type":43,"tag":52,"props":1436,"children":1437},{},[1438,1440,1446],{"type":49,"value":1439},"If user needs to switch workspaces, they must do so via Dashboard or CLI (",{"type":43,"tag":120,"props":1441,"children":1443},{"className":1442},[],[1444],{"type":49,"value":1445},"render workspace set",{"type":49,"value":313},{"type":43,"tag":52,"props":1448,"children":1449},{},[1450],{"type":49,"value":1451},"Once prerequisites are met, proceed with deployment workflow.",{"type":43,"tag":1453,"props":1454,"children":1455},"hr",{},[],{"type":43,"tag":44,"props":1457,"children":1459},{"id":1458},"method-1-blueprint-deployment-recommended-for-complex-apps",[1460],{"type":49,"value":1461},"Method 1: Blueprint Deployment (Recommended for Complex Apps)",{"type":43,"tag":156,"props":1463,"children":1465},{"id":1464},"blueprint-workflow",[1466],{"type":49,"value":1467},"Blueprint Workflow",{"type":43,"tag":414,"props":1469,"children":1471},{"id":1470},"step-1-analyze-codebase",[1472],{"type":49,"value":1473},"Step 1: Analyze Codebase",{"type":43,"tag":52,"props":1475,"children":1476},{},[1477,1479,1484],{"type":49,"value":1478},"Analyze the codebase to determine framework\u002Fruntime, build and start commands, required env vars, datastores, and port binding. Use the detailed checklists in ",{"type":43,"tag":1336,"props":1480,"children":1482},{"href":1481},"references\u002Fcodebase-analysis.md",[1483],{"type":49,"value":1481},{"type":49,"value":177},{"type":43,"tag":414,"props":1486,"children":1488},{"id":1487},"step-2-generate-renderyaml",[1489],{"type":49,"value":1490},"Step 2: Generate render.yaml",{"type":43,"tag":52,"props":1492,"children":1493},{},[1494,1496,1501],{"type":49,"value":1495},"Create a ",{"type":43,"tag":120,"props":1497,"children":1499},{"className":1498},[],[1500],{"type":49,"value":133},{"type":49,"value":1502}," Blueprint file following the Blueprint specification.",{"type":43,"tag":52,"props":1504,"children":1505},{},[1506,1508],{"type":49,"value":1507},"Complete specification: ",{"type":43,"tag":1336,"props":1509,"children":1511},{"href":1510},"references\u002Fblueprint-spec.md",[1512],{"type":49,"value":1510},{"type":43,"tag":52,"props":1514,"children":1515},{},[1516],{"type":43,"tag":58,"props":1517,"children":1518},{},[1519],{"type":49,"value":1520},"Key Points:",{"type":43,"tag":142,"props":1522,"children":1523},{},[1524,1537,1542,1555,1596],{"type":43,"tag":88,"props":1525,"children":1526},{},[1527,1529,1535],{"type":49,"value":1528},"Always use ",{"type":43,"tag":120,"props":1530,"children":1532},{"className":1531},[],[1533],{"type":49,"value":1534},"plan: free",{"type":49,"value":1536}," unless user specifies otherwise",{"type":43,"tag":88,"props":1538,"children":1539},{},[1540],{"type":49,"value":1541},"Include ALL environment variables the app needs",{"type":43,"tag":88,"props":1543,"children":1544},{},[1545,1547,1553],{"type":49,"value":1546},"Mark secrets with ",{"type":43,"tag":120,"props":1548,"children":1550},{"className":1549},[],[1551],{"type":49,"value":1552},"sync: false",{"type":49,"value":1554}," (user fills these in Dashboard)",{"type":43,"tag":88,"props":1556,"children":1557},{},[1558,1560,1566,1568,1574,1575,1581,1582,1588,1590],{"type":49,"value":1559},"Use appropriate service type: ",{"type":43,"tag":120,"props":1561,"children":1563},{"className":1562},[],[1564],{"type":49,"value":1565},"web",{"type":49,"value":1567},", ",{"type":43,"tag":120,"props":1569,"children":1571},{"className":1570},[],[1572],{"type":49,"value":1573},"worker",{"type":49,"value":1567},{"type":43,"tag":120,"props":1576,"children":1578},{"className":1577},[],[1579],{"type":49,"value":1580},"cron",{"type":49,"value":1567},{"type":43,"tag":120,"props":1583,"children":1585},{"className":1584},[],[1586],{"type":49,"value":1587},"static",{"type":49,"value":1589},", or ",{"type":43,"tag":120,"props":1591,"children":1593},{"className":1592},[],[1594],{"type":49,"value":1595},"pserv",{"type":43,"tag":88,"props":1597,"children":1598},{},[1599,1601],{"type":49,"value":1600},"Use appropriate runtime: ",{"type":43,"tag":1336,"props":1602,"children":1604},{"href":1603},"references\u002Fruntimes.md",[1605],{"type":49,"value":1603},{"type":43,"tag":52,"props":1607,"children":1608},{},[1609],{"type":43,"tag":58,"props":1610,"children":1611},{},[1612],{"type":49,"value":1613},"Basic Structure:",{"type":43,"tag":528,"props":1615,"children":1619},{"className":1616,"code":1617,"language":1618,"meta":533,"style":533},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","services:\n  - type: web\n    name: my-app\n    runtime: node\n    plan: free\n    buildCommand: npm ci\n    startCommand: npm start\n    envVars:\n      - key: DATABASE_URL\n        fromDatabase:\n          name: postgres\n          property: connectionString\n      - key: JWT_SECRET\n        sync: false  # User fills in Dashboard\n\ndatabases:\n  - name: postgres\n    databaseName: myapp_db\n    plan: free\n","yaml",[1620],{"type":43,"tag":120,"props":1621,"children":1622},{"__ignoreMap":533},[1623,1636,1658,1675,1692,1709,1726,1743,1755,1777,1789,1807,1825,1846,1870,1880,1893,1913,1931],{"type":43,"tag":539,"props":1624,"children":1625},{"class":541,"line":542},[1626,1631],{"type":43,"tag":539,"props":1627,"children":1628},{"style":885},[1629],{"type":49,"value":1630},"services",{"type":43,"tag":539,"props":1632,"children":1633},{"style":749},[1634],{"type":49,"value":1635},":\n",{"type":43,"tag":539,"props":1637,"children":1638},{"class":541,"line":712},[1639,1644,1649,1653],{"type":43,"tag":539,"props":1640,"children":1641},{"style":749},[1642],{"type":49,"value":1643},"  -",{"type":43,"tag":539,"props":1645,"children":1646},{"style":885},[1647],{"type":49,"value":1648}," type",{"type":43,"tag":539,"props":1650,"children":1651},{"style":749},[1652],{"type":49,"value":776},{"type":43,"tag":539,"props":1654,"children":1655},{"style":552},[1656],{"type":49,"value":1657}," web\n",{"type":43,"tag":539,"props":1659,"children":1660},{"class":541,"line":784},[1661,1666,1670],{"type":43,"tag":539,"props":1662,"children":1663},{"style":885},[1664],{"type":49,"value":1665},"    name",{"type":43,"tag":539,"props":1667,"children":1668},{"style":749},[1669],{"type":49,"value":776},{"type":43,"tag":539,"props":1671,"children":1672},{"style":552},[1673],{"type":49,"value":1674}," my-app\n",{"type":43,"tag":539,"props":1676,"children":1677},{"class":541,"line":809},[1678,1683,1687],{"type":43,"tag":539,"props":1679,"children":1680},{"style":885},[1681],{"type":49,"value":1682},"    runtime",{"type":43,"tag":539,"props":1684,"children":1685},{"style":749},[1686],{"type":49,"value":776},{"type":43,"tag":539,"props":1688,"children":1689},{"style":552},[1690],{"type":49,"value":1691}," node\n",{"type":43,"tag":539,"props":1693,"children":1694},{"class":541,"line":851},[1695,1700,1704],{"type":43,"tag":539,"props":1696,"children":1697},{"style":885},[1698],{"type":49,"value":1699},"    plan",{"type":43,"tag":539,"props":1701,"children":1702},{"style":749},[1703],{"type":49,"value":776},{"type":43,"tag":539,"props":1705,"children":1706},{"style":552},[1707],{"type":49,"value":1708}," free\n",{"type":43,"tag":539,"props":1710,"children":1711},{"class":541,"line":876},[1712,1717,1721],{"type":43,"tag":539,"props":1713,"children":1714},{"style":885},[1715],{"type":49,"value":1716},"    buildCommand",{"type":43,"tag":539,"props":1718,"children":1719},{"style":749},[1720],{"type":49,"value":776},{"type":43,"tag":539,"props":1722,"children":1723},{"style":552},[1724],{"type":49,"value":1725}," npm ci\n",{"type":43,"tag":539,"props":1727,"children":1728},{"class":541,"line":913},[1729,1734,1738],{"type":43,"tag":539,"props":1730,"children":1731},{"style":885},[1732],{"type":49,"value":1733},"    startCommand",{"type":43,"tag":539,"props":1735,"children":1736},{"style":749},[1737],{"type":49,"value":776},{"type":43,"tag":539,"props":1739,"children":1740},{"style":552},[1741],{"type":49,"value":1742}," npm start\n",{"type":43,"tag":539,"props":1744,"children":1745},{"class":541,"line":922},[1746,1751],{"type":43,"tag":539,"props":1747,"children":1748},{"style":885},[1749],{"type":49,"value":1750},"    envVars",{"type":43,"tag":539,"props":1752,"children":1753},{"style":749},[1754],{"type":49,"value":1635},{"type":43,"tag":539,"props":1756,"children":1757},{"class":541,"line":931},[1758,1763,1768,1772],{"type":43,"tag":539,"props":1759,"children":1760},{"style":749},[1761],{"type":49,"value":1762},"      -",{"type":43,"tag":539,"props":1764,"children":1765},{"style":885},[1766],{"type":49,"value":1767}," key",{"type":43,"tag":539,"props":1769,"children":1770},{"style":749},[1771],{"type":49,"value":776},{"type":43,"tag":539,"props":1773,"children":1774},{"style":552},[1775],{"type":49,"value":1776}," DATABASE_URL\n",{"type":43,"tag":539,"props":1778,"children":1779},{"class":541,"line":940},[1780,1785],{"type":43,"tag":539,"props":1781,"children":1782},{"style":885},[1783],{"type":49,"value":1784},"        fromDatabase",{"type":43,"tag":539,"props":1786,"children":1787},{"style":749},[1788],{"type":49,"value":1635},{"type":43,"tag":539,"props":1790,"children":1792},{"class":541,"line":1791},11,[1793,1798,1802],{"type":43,"tag":539,"props":1794,"children":1795},{"style":885},[1796],{"type":49,"value":1797},"          name",{"type":43,"tag":539,"props":1799,"children":1800},{"style":749},[1801],{"type":49,"value":776},{"type":43,"tag":539,"props":1803,"children":1804},{"style":552},[1805],{"type":49,"value":1806}," postgres\n",{"type":43,"tag":539,"props":1808,"children":1810},{"class":541,"line":1809},12,[1811,1816,1820],{"type":43,"tag":539,"props":1812,"children":1813},{"style":885},[1814],{"type":49,"value":1815},"          property",{"type":43,"tag":539,"props":1817,"children":1818},{"style":749},[1819],{"type":49,"value":776},{"type":43,"tag":539,"props":1821,"children":1822},{"style":552},[1823],{"type":49,"value":1824}," connectionString\n",{"type":43,"tag":539,"props":1826,"children":1828},{"class":541,"line":1827},13,[1829,1833,1837,1841],{"type":43,"tag":539,"props":1830,"children":1831},{"style":749},[1832],{"type":49,"value":1762},{"type":43,"tag":539,"props":1834,"children":1835},{"style":885},[1836],{"type":49,"value":1767},{"type":43,"tag":539,"props":1838,"children":1839},{"style":749},[1840],{"type":49,"value":776},{"type":43,"tag":539,"props":1842,"children":1843},{"style":552},[1844],{"type":49,"value":1845}," JWT_SECRET\n",{"type":43,"tag":539,"props":1847,"children":1849},{"class":541,"line":1848},14,[1850,1855,1859,1865],{"type":43,"tag":539,"props":1851,"children":1852},{"style":885},[1853],{"type":49,"value":1854},"        sync",{"type":43,"tag":539,"props":1856,"children":1857},{"style":749},[1858],{"type":49,"value":776},{"type":43,"tag":539,"props":1860,"children":1862},{"style":1861},"--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC",[1863],{"type":49,"value":1864}," false",{"type":43,"tag":539,"props":1866,"children":1867},{"style":1271},[1868],{"type":49,"value":1869},"  # User fills in Dashboard\n",{"type":43,"tag":539,"props":1871,"children":1873},{"class":541,"line":1872},15,[1874],{"type":43,"tag":539,"props":1875,"children":1877},{"emptyLinePlaceholder":1876},true,[1878],{"type":49,"value":1879},"\n",{"type":43,"tag":539,"props":1881,"children":1883},{"class":541,"line":1882},16,[1884,1889],{"type":43,"tag":539,"props":1885,"children":1886},{"style":885},[1887],{"type":49,"value":1888},"databases",{"type":43,"tag":539,"props":1890,"children":1891},{"style":749},[1892],{"type":49,"value":1635},{"type":43,"tag":539,"props":1894,"children":1895},{"class":541,"line":26},[1896,1900,1905,1909],{"type":43,"tag":539,"props":1897,"children":1898},{"style":749},[1899],{"type":49,"value":1643},{"type":43,"tag":539,"props":1901,"children":1902},{"style":885},[1903],{"type":49,"value":1904}," name",{"type":43,"tag":539,"props":1906,"children":1907},{"style":749},[1908],{"type":49,"value":776},{"type":43,"tag":539,"props":1910,"children":1911},{"style":552},[1912],{"type":49,"value":1806},{"type":43,"tag":539,"props":1914,"children":1916},{"class":541,"line":1915},18,[1917,1922,1926],{"type":43,"tag":539,"props":1918,"children":1919},{"style":885},[1920],{"type":49,"value":1921},"    databaseName",{"type":43,"tag":539,"props":1923,"children":1924},{"style":749},[1925],{"type":49,"value":776},{"type":43,"tag":539,"props":1927,"children":1928},{"style":552},[1929],{"type":49,"value":1930}," myapp_db\n",{"type":43,"tag":539,"props":1932,"children":1934},{"class":541,"line":1933},19,[1935,1939,1943],{"type":43,"tag":539,"props":1936,"children":1937},{"style":885},[1938],{"type":49,"value":1699},{"type":43,"tag":539,"props":1940,"children":1941},{"style":749},[1942],{"type":49,"value":776},{"type":43,"tag":539,"props":1944,"children":1945},{"style":552},[1946],{"type":49,"value":1708},{"type":43,"tag":52,"props":1948,"children":1949},{},[1950],{"type":43,"tag":58,"props":1951,"children":1952},{},[1953],{"type":49,"value":1954},"Service Types:",{"type":43,"tag":142,"props":1956,"children":1957},{},[1958,1968,1978,1988,1998],{"type":43,"tag":88,"props":1959,"children":1960},{},[1961,1966],{"type":43,"tag":120,"props":1962,"children":1964},{"className":1963},[],[1965],{"type":49,"value":1565},{"type":49,"value":1967},": HTTP services, APIs, web applications (publicly accessible)",{"type":43,"tag":88,"props":1969,"children":1970},{},[1971,1976],{"type":43,"tag":120,"props":1972,"children":1974},{"className":1973},[],[1975],{"type":49,"value":1573},{"type":49,"value":1977},": Background job processors (not publicly accessible)",{"type":43,"tag":88,"props":1979,"children":1980},{},[1981,1986],{"type":43,"tag":120,"props":1982,"children":1984},{"className":1983},[],[1985],{"type":49,"value":1580},{"type":49,"value":1987},": Scheduled tasks that run on a cron schedule",{"type":43,"tag":88,"props":1989,"children":1990},{},[1991,1996],{"type":43,"tag":120,"props":1992,"children":1994},{"className":1993},[],[1995],{"type":49,"value":1587},{"type":49,"value":1997},": Static sites (HTML\u002FCSS\u002FJS served via CDN)",{"type":43,"tag":88,"props":1999,"children":2000},{},[2001,2006],{"type":43,"tag":120,"props":2002,"children":2004},{"className":2003},[],[2005],{"type":49,"value":1595},{"type":49,"value":2007},": Private services (internal only, within same account)",{"type":43,"tag":52,"props":2009,"children":2010},{},[2011,2013,2018,2020,2024,2026],{"type":49,"value":2012},"Service type details: ",{"type":43,"tag":1336,"props":2014,"children":2016},{"href":2015},"references\u002Fservice-types.md",[2017],{"type":49,"value":2015},{"type":49,"value":2019},"\nRuntime options: ",{"type":43,"tag":1336,"props":2021,"children":2022},{"href":1603},[2023],{"type":49,"value":1603},{"type":49,"value":2025},"\nTemplate examples: ",{"type":43,"tag":1336,"props":2027,"children":2029},{"href":2028},"assets\u002F",[2030],{"type":49,"value":2028},{"type":43,"tag":414,"props":2032,"children":2034},{"id":2033},"step-25-immediate-next-steps-always-provide",[2035],{"type":49,"value":2036},"Step 2.5: Immediate Next Steps (Always Provide)",{"type":43,"tag":52,"props":2038,"children":2039},{},[2040,2042,2047],{"type":49,"value":2041},"After creating ",{"type":43,"tag":120,"props":2043,"children":2045},{"className":2044},[],[2046],{"type":49,"value":133},{"type":49,"value":2048},", always give the user a short, explicit checklist and run validation immediately when the CLI is available:",{"type":43,"tag":84,"props":2050,"children":2051},{},[2052,2084,2107,2122,2132,2147],{"type":43,"tag":88,"props":2053,"children":2054},{},[2055,2060,2062,2068,2070,2075,2077,2083],{"type":43,"tag":58,"props":2056,"children":2057},{},[2058],{"type":49,"value":2059},"Authenticate (CLI)",{"type":49,"value":2061},": run ",{"type":43,"tag":120,"props":2063,"children":2065},{"className":2064},[],[2066],{"type":49,"value":2067},"render whoami -o json",{"type":49,"value":2069}," (if not logged in, run ",{"type":43,"tag":120,"props":2071,"children":2073},{"className":2072},[],[2074],{"type":49,"value":1359},{"type":49,"value":2076}," or set ",{"type":43,"tag":120,"props":2078,"children":2080},{"className":2079},[],[2081],{"type":49,"value":2082},"RENDER_API_KEY",{"type":49,"value":1344},{"type":43,"tag":88,"props":2085,"children":2086},{},[2087,2092,2093,2099],{"type":43,"tag":58,"props":2088,"children":2089},{},[2090],{"type":49,"value":2091},"Validate (recommended)",{"type":49,"value":2061},{"type":43,"tag":120,"props":2094,"children":2096},{"className":2095},[],[2097],{"type":49,"value":2098},"render blueprints validate",{"type":43,"tag":142,"props":2100,"children":2101},{},[2102],{"type":43,"tag":88,"props":2103,"children":2104},{},[2105],{"type":49,"value":2106},"If the CLI isn't installed, offer to install it and provide the command.",{"type":43,"tag":88,"props":2108,"children":2109},{},[2110,2115,2116],{"type":43,"tag":58,"props":2111,"children":2112},{},[2113],{"type":49,"value":2114},"Commit + push",{"type":49,"value":1326},{"type":43,"tag":120,"props":2117,"children":2119},{"className":2118},[],[2120],{"type":49,"value":2121},"git add render.yaml && git commit -m \"Add Render deployment configuration\" && git push origin main",{"type":43,"tag":88,"props":2123,"children":2124},{},[2125,2130],{"type":43,"tag":58,"props":2126,"children":2127},{},[2128],{"type":49,"value":2129},"Open Dashboard",{"type":49,"value":2131},": Use the Blueprint deeplink and complete Git OAuth if prompted",{"type":43,"tag":88,"props":2133,"children":2134},{},[2135,2140,2142],{"type":43,"tag":58,"props":2136,"children":2137},{},[2138],{"type":49,"value":2139},"Fill secrets",{"type":49,"value":2141},": Set env vars marked ",{"type":43,"tag":120,"props":2143,"children":2145},{"className":2144},[],[2146],{"type":49,"value":1552},{"type":43,"tag":88,"props":2148,"children":2149},{},[2150,2155],{"type":43,"tag":58,"props":2151,"children":2152},{},[2153],{"type":49,"value":2154},"Deploy",{"type":49,"value":2156},": Click \"Apply\" and monitor the deploy",{"type":43,"tag":414,"props":2158,"children":2160},{"id":2159},"step-3-validate-configuration",[2161],{"type":49,"value":2162},"Step 3: Validate Configuration",{"type":43,"tag":52,"props":2164,"children":2165},{},[2166],{"type":49,"value":2167},"Validate the render.yaml file to catch errors before deployment. If the CLI is installed, run the commands directly; only prompt the user if the CLI is missing:",{"type":43,"tag":528,"props":2169,"children":2171},{"className":530,"code":2170,"language":532,"meta":533,"style":533},"render whoami -o json  # Ensure CLI is authenticated (won't always prompt)\nrender blueprints validate\n",[2172],{"type":43,"tag":120,"props":2173,"children":2174},{"__ignoreMap":533},[2175,2200],{"type":43,"tag":539,"props":2176,"children":2177},{"class":541,"line":542},[2178,2182,2186,2190,2195],{"type":43,"tag":539,"props":2179,"children":2180},{"style":546},[2181],{"type":49,"value":14},{"type":43,"tag":539,"props":2183,"children":2184},{"style":552},[2185],{"type":49,"value":1286},{"type":43,"tag":539,"props":2187,"children":2188},{"style":552},[2189],{"type":49,"value":1291},{"type":43,"tag":539,"props":2191,"children":2192},{"style":552},[2193],{"type":49,"value":2194}," json",{"type":43,"tag":539,"props":2196,"children":2197},{"style":1271},[2198],{"type":49,"value":2199},"  # Ensure CLI is authenticated (won't always prompt)\n",{"type":43,"tag":539,"props":2201,"children":2202},{"class":541,"line":712},[2203,2207,2212],{"type":43,"tag":539,"props":2204,"children":2205},{"style":546},[2206],{"type":49,"value":14},{"type":43,"tag":539,"props":2208,"children":2209},{"style":552},[2210],{"type":49,"value":2211}," blueprints",{"type":43,"tag":539,"props":2213,"children":2214},{"style":552},[2215],{"type":49,"value":2216}," validate\n",{"type":43,"tag":52,"props":2218,"children":2219},{},[2220],{"type":49,"value":2221},"Fix any validation errors before proceeding. Common issues:",{"type":43,"tag":142,"props":2223,"children":2224},{},[2225,2251,2256,2261],{"type":43,"tag":88,"props":2226,"children":2227},{},[2228,2230,2236,2237,2243,2244,2250],{"type":49,"value":2229},"Missing required fields (",{"type":43,"tag":120,"props":2231,"children":2233},{"className":2232},[],[2234],{"type":49,"value":2235},"name",{"type":49,"value":1567},{"type":43,"tag":120,"props":2238,"children":2240},{"className":2239},[],[2241],{"type":49,"value":2242},"type",{"type":49,"value":1567},{"type":43,"tag":120,"props":2245,"children":2247},{"className":2246},[],[2248],{"type":49,"value":2249},"runtime",{"type":49,"value":1344},{"type":43,"tag":88,"props":2252,"children":2253},{},[2254],{"type":49,"value":2255},"Invalid runtime values",{"type":43,"tag":88,"props":2257,"children":2258},{},[2259],{"type":49,"value":2260},"Incorrect YAML syntax",{"type":43,"tag":88,"props":2262,"children":2263},{},[2264],{"type":49,"value":2265},"Invalid environment variable references",{"type":43,"tag":52,"props":2267,"children":2268},{},[2269,2271],{"type":49,"value":2270},"Configuration guide: ",{"type":43,"tag":1336,"props":2272,"children":2274},{"href":2273},"references\u002Fconfiguration-guide.md",[2275],{"type":49,"value":2273},{"type":43,"tag":414,"props":2277,"children":2279},{"id":2278},"step-4-commit-and-push",[2280],{"type":49,"value":2281},"Step 4: Commit and Push",{"type":43,"tag":52,"props":2283,"children":2284},{},[2285,2290,2292,2297],{"type":43,"tag":58,"props":2286,"children":2287},{},[2288],{"type":49,"value":2289},"IMPORTANT:",{"type":49,"value":2291}," You must merge the ",{"type":43,"tag":120,"props":2293,"children":2295},{"className":2294},[],[2296],{"type":49,"value":133},{"type":49,"value":2298}," file into your repository before deploying.",{"type":43,"tag":52,"props":2300,"children":2301},{},[2302,2304,2309],{"type":49,"value":2303},"Ensure the ",{"type":43,"tag":120,"props":2305,"children":2307},{"className":2306},[],[2308],{"type":49,"value":133},{"type":49,"value":2310}," file is committed and pushed to your Git remote:",{"type":43,"tag":528,"props":2312,"children":2314},{"className":530,"code":2313,"language":532,"meta":533,"style":533},"git add render.yaml\ngit commit -m \"Add Render deployment configuration\"\ngit push origin main\n",[2315],{"type":43,"tag":120,"props":2316,"children":2317},{"__ignoreMap":533},[2318,2334,2364],{"type":43,"tag":539,"props":2319,"children":2320},{"class":541,"line":542},[2321,2325,2329],{"type":43,"tag":539,"props":2322,"children":2323},{"style":546},[2324],{"type":49,"value":549},{"type":43,"tag":539,"props":2326,"children":2327},{"style":552},[2328],{"type":49,"value":1024},{"type":43,"tag":539,"props":2330,"children":2331},{"style":552},[2332],{"type":49,"value":2333}," render.yaml\n",{"type":43,"tag":539,"props":2335,"children":2336},{"class":541,"line":712},[2337,2341,2346,2351,2355,2360],{"type":43,"tag":539,"props":2338,"children":2339},{"style":546},[2340],{"type":49,"value":549},{"type":43,"tag":539,"props":2342,"children":2343},{"style":552},[2344],{"type":49,"value":2345}," commit",{"type":43,"tag":539,"props":2347,"children":2348},{"style":552},[2349],{"type":49,"value":2350}," -m",{"type":43,"tag":539,"props":2352,"children":2353},{"style":749},[2354],{"type":49,"value":834},{"type":43,"tag":539,"props":2356,"children":2357},{"style":552},[2358],{"type":49,"value":2359},"Add Render deployment configuration",{"type":43,"tag":539,"props":2361,"children":2362},{"style":749},[2363],{"type":49,"value":910},{"type":43,"tag":539,"props":2365,"children":2366},{"class":541,"line":784},[2367,2371,2376,2381],{"type":43,"tag":539,"props":2368,"children":2369},{"style":546},[2370],{"type":49,"value":549},{"type":43,"tag":539,"props":2372,"children":2373},{"style":552},[2374],{"type":49,"value":2375}," push",{"type":43,"tag":539,"props":2377,"children":2378},{"style":552},[2379],{"type":49,"value":2380}," origin",{"type":43,"tag":539,"props":2382,"children":2383},{"style":552},[2384],{"type":49,"value":2385}," main\n",{"type":43,"tag":52,"props":2387,"children":2388},{},[2389,2391,2397],{"type":49,"value":2390},"If there is no Git remote yet, stop here and guide the user to create a GitHub\u002FGitLab\u002FBitbucket repo, add it as ",{"type":43,"tag":120,"props":2392,"children":2394},{"className":2393},[],[2395],{"type":49,"value":2396},"origin",{"type":49,"value":2398},", and push before continuing.",{"type":43,"tag":52,"props":2400,"children":2401},{},[2402,2407],{"type":43,"tag":58,"props":2403,"children":2404},{},[2405],{"type":49,"value":2406},"Why this matters:",{"type":49,"value":2408}," The Dashboard deeplink will read the render.yaml from your repository. If the file isn't merged and pushed, Render won't find the configuration and deployment will fail.",{"type":43,"tag":52,"props":2410,"children":2411},{},[2412],{"type":49,"value":2413},"Verify the file is in your remote repository before proceeding to the next step.",{"type":43,"tag":414,"props":2415,"children":2417},{"id":2416},"step-5-generate-deeplink",[2418],{"type":49,"value":2419},"Step 5: Generate Deeplink",{"type":43,"tag":52,"props":2421,"children":2422},{},[2423],{"type":49,"value":2424},"Get the Git repository URL:",{"type":43,"tag":528,"props":2426,"children":2428},{"className":530,"code":2427,"language":532,"meta":533,"style":533},"git remote get-url origin\n",[2429],{"type":43,"tag":120,"props":2430,"children":2431},{"__ignoreMap":533},[2432],{"type":43,"tag":539,"props":2433,"children":2434},{"class":541,"line":542},[2435,2439,2443,2448],{"type":43,"tag":539,"props":2436,"children":2437},{"style":546},[2438],{"type":49,"value":549},{"type":43,"tag":539,"props":2440,"children":2441},{"style":552},[2442],{"type":49,"value":555},{"type":43,"tag":539,"props":2444,"children":2445},{"style":552},[2446],{"type":49,"value":2447}," get-url",{"type":43,"tag":539,"props":2449,"children":2450},{"style":552},[2451],{"type":49,"value":2452}," origin\n",{"type":43,"tag":52,"props":2454,"children":2455},{},[2456,2458],{"type":49,"value":2457},"This will return a URL from your Git provider. ",{"type":43,"tag":58,"props":2459,"children":2460},{},[2461],{"type":49,"value":2462},"If the URL is SSH format, convert it to HTTPS:",{"type":43,"tag":340,"props":2464,"children":2465},{},[2466,2482],{"type":43,"tag":344,"props":2467,"children":2468},{},[2469],{"type":43,"tag":348,"props":2470,"children":2471},{},[2472,2477],{"type":43,"tag":352,"props":2473,"children":2474},{},[2475],{"type":49,"value":2476},"SSH Format",{"type":43,"tag":352,"props":2478,"children":2479},{},[2480],{"type":49,"value":2481},"HTTPS Format",{"type":43,"tag":368,"props":2483,"children":2484},{},[2485,2506,2527],{"type":43,"tag":348,"props":2486,"children":2487},{},[2488,2497],{"type":43,"tag":375,"props":2489,"children":2490},{},[2491],{"type":43,"tag":120,"props":2492,"children":2494},{"className":2493},[],[2495],{"type":49,"value":2496},"git@github.com:user\u002Frepo.git",{"type":43,"tag":375,"props":2498,"children":2499},{},[2500],{"type":43,"tag":120,"props":2501,"children":2503},{"className":2502},[],[2504],{"type":49,"value":2505},"https:\u002F\u002Fgithub.com\u002Fuser\u002Frepo",{"type":43,"tag":348,"props":2507,"children":2508},{},[2509,2518],{"type":43,"tag":375,"props":2510,"children":2511},{},[2512],{"type":43,"tag":120,"props":2513,"children":2515},{"className":2514},[],[2516],{"type":49,"value":2517},"git@gitlab.com:user\u002Frepo.git",{"type":43,"tag":375,"props":2519,"children":2520},{},[2521],{"type":43,"tag":120,"props":2522,"children":2524},{"className":2523},[],[2525],{"type":49,"value":2526},"https:\u002F\u002Fgitlab.com\u002Fuser\u002Frepo",{"type":43,"tag":348,"props":2528,"children":2529},{},[2530,2539],{"type":43,"tag":375,"props":2531,"children":2532},{},[2533],{"type":43,"tag":120,"props":2534,"children":2536},{"className":2535},[],[2537],{"type":49,"value":2538},"git@bitbucket.org:user\u002Frepo.git",{"type":43,"tag":375,"props":2540,"children":2541},{},[2542],{"type":43,"tag":120,"props":2543,"children":2545},{"className":2544},[],[2546],{"type":49,"value":2547},"https:\u002F\u002Fbitbucket.org\u002Fuser\u002Frepo",{"type":43,"tag":52,"props":2549,"children":2550},{},[2551,2556,2558,2564,2566,2572,2574,2580],{"type":43,"tag":58,"props":2552,"children":2553},{},[2554],{"type":49,"value":2555},"Conversion pattern:",{"type":49,"value":2557}," Replace ",{"type":43,"tag":120,"props":2559,"children":2561},{"className":2560},[],[2562],{"type":49,"value":2563},"git@\u003Chost>:",{"type":49,"value":2565}," with ",{"type":43,"tag":120,"props":2567,"children":2569},{"className":2568},[],[2570],{"type":49,"value":2571},"https:\u002F\u002F\u003Chost>\u002F",{"type":49,"value":2573}," and remove ",{"type":43,"tag":120,"props":2575,"children":2577},{"className":2576},[],[2578],{"type":49,"value":2579},".git",{"type":49,"value":2581}," suffix.",{"type":43,"tag":52,"props":2583,"children":2584},{},[2585],{"type":49,"value":2586},"Format the Dashboard deeplink using the HTTPS repository URL:",{"type":43,"tag":528,"props":2588,"children":2591},{"className":2589,"code":2590,"language":49},[592],"https:\u002F\u002Fdashboard.render.com\u002Fblueprint\u002Fnew?repo=\u003CREPOSITORY_URL>\n",[2592],{"type":43,"tag":120,"props":2593,"children":2594},{"__ignoreMap":533},[2595],{"type":49,"value":2590},{"type":43,"tag":52,"props":2597,"children":2598},{},[2599],{"type":49,"value":2600},"Example:",{"type":43,"tag":528,"props":2602,"children":2605},{"className":2603,"code":2604,"language":49},[592],"https:\u002F\u002Fdashboard.render.com\u002Fblueprint\u002Fnew?repo=https:\u002F\u002Fgithub.com\u002Fusername\u002Frepo-name\n",[2606],{"type":43,"tag":120,"props":2607,"children":2608},{"__ignoreMap":533},[2609],{"type":49,"value":2604},{"type":43,"tag":414,"props":2611,"children":2613},{"id":2612},"step-6-guide-user",[2614],{"type":49,"value":2615},"Step 6: Guide User",{"type":43,"tag":52,"props":2617,"children":2618},{},[2619,2624],{"type":43,"tag":58,"props":2620,"children":2621},{},[2622],{"type":49,"value":2623},"CRITICAL:",{"type":49,"value":2625}," Ensure the user has merged and pushed the render.yaml file to their repository before clicking the deeplink. If the file isn't in the repository, Render cannot read the Blueprint configuration and deployment will fail.",{"type":43,"tag":52,"props":2627,"children":2628},{},[2629],{"type":49,"value":2630},"Provide the deeplink to the user with these instructions:",{"type":43,"tag":84,"props":2632,"children":2633},{},[2634,2644,2649,2654,2659,2670,2675],{"type":43,"tag":88,"props":2635,"children":2636},{},[2637,2642],{"type":43,"tag":58,"props":2638,"children":2639},{},[2640],{"type":49,"value":2641},"Verify render.yaml is merged",{"type":49,"value":2643}," - Confirm the file exists in your repository on GitHub\u002FGitLab\u002FBitbucket",{"type":43,"tag":88,"props":2645,"children":2646},{},[2647],{"type":49,"value":2648},"Click the deeplink to open Render Dashboard",{"type":43,"tag":88,"props":2650,"children":2651},{},[2652],{"type":49,"value":2653},"Complete Git provider OAuth if prompted",{"type":43,"tag":88,"props":2655,"children":2656},{},[2657],{"type":49,"value":2658},"Name the Blueprint (or use default from render.yaml)",{"type":43,"tag":88,"props":2660,"children":2661},{},[2662,2664,2669],{"type":49,"value":2663},"Fill in secret environment variables (marked with ",{"type":43,"tag":120,"props":2665,"children":2667},{"className":2666},[],[2668],{"type":49,"value":1552},{"type":49,"value":1344},{"type":43,"tag":88,"props":2671,"children":2672},{},[2673],{"type":49,"value":2674},"Review services and databases configuration",{"type":43,"tag":88,"props":2676,"children":2677},{},[2678],{"type":49,"value":2679},"Click \"Apply\" to deploy",{"type":43,"tag":52,"props":2681,"children":2682},{},[2683],{"type":49,"value":2684},"The deployment will begin automatically. Users can monitor progress in the Render Dashboard.",{"type":43,"tag":414,"props":2686,"children":2688},{"id":2687},"step-7-verify-deployment",[2689],{"type":49,"value":2690},"Step 7: Verify Deployment",{"type":43,"tag":52,"props":2692,"children":2693},{},[2694],{"type":49,"value":2695},"After the user deploys via Dashboard, verify everything is working.",{"type":43,"tag":52,"props":2697,"children":2698},{},[2699],{"type":43,"tag":58,"props":2700,"children":2701},{},[2702],{"type":49,"value":2703},"Check deployment status via MCP:",{"type":43,"tag":528,"props":2705,"children":2708},{"className":2706,"code":2707,"language":49},[592],"list_deploys(serviceId: \"\u003Cservice-id>\", limit: 1)\n",[2709],{"type":43,"tag":120,"props":2710,"children":2711},{"__ignoreMap":533},[2712],{"type":49,"value":2707},{"type":43,"tag":52,"props":2714,"children":2715},{},[2716,2718,2724],{"type":49,"value":2717},"Look for ",{"type":43,"tag":120,"props":2719,"children":2721},{"className":2720},[],[2722],{"type":49,"value":2723},"status: \"live\"",{"type":49,"value":2725}," to confirm successful deployment.",{"type":43,"tag":52,"props":2727,"children":2728},{},[2729],{"type":43,"tag":58,"props":2730,"children":2731},{},[2732],{"type":49,"value":2733},"Check for runtime errors (wait 2-3 minutes after deploy):",{"type":43,"tag":528,"props":2735,"children":2738},{"className":2736,"code":2737,"language":49},[592],"list_logs(resource: [\"\u003Cservice-id>\"], level: [\"error\"], limit: 20)\n",[2739],{"type":43,"tag":120,"props":2740,"children":2741},{"__ignoreMap":533},[2742],{"type":49,"value":2737},{"type":43,"tag":52,"props":2744,"children":2745},{},[2746],{"type":43,"tag":58,"props":2747,"children":2748},{},[2749],{"type":49,"value":2750},"Check service health metrics:",{"type":43,"tag":528,"props":2752,"children":2755},{"className":2753,"code":2754,"language":49},[592],"get_metrics(\n  resourceId: \"\u003Cservice-id>\",\n  metricTypes: [\"http_request_count\", \"cpu_usage\", \"memory_usage\"]\n)\n",[2756],{"type":43,"tag":120,"props":2757,"children":2758},{"__ignoreMap":533},[2759],{"type":49,"value":2754},{"type":43,"tag":52,"props":2761,"children":2762},{},[2763,2765,2770],{"type":49,"value":2764},"If errors are found, proceed to the ",{"type":43,"tag":58,"props":2766,"children":2767},{},[2768],{"type":49,"value":2769},"Post-deploy verification and basic triage",{"type":49,"value":2771}," section below.",{"type":43,"tag":1453,"props":2773,"children":2774},{},[],{"type":43,"tag":44,"props":2776,"children":2778},{"id":2777},"method-2-direct-service-creation-quick-single-service-deployments",[2779],{"type":49,"value":2780},"Method 2: Direct Service Creation (Quick Single-Service Deployments)",{"type":43,"tag":52,"props":2782,"children":2783},{},[2784],{"type":49,"value":2785},"For simple deployments without Infrastructure-as-Code, create services directly via MCP tools.",{"type":43,"tag":156,"props":2787,"children":2789},{"id":2788},"when-to-use-direct-creation",[2790],{"type":49,"value":2791},"When to Use Direct Creation",{"type":43,"tag":142,"props":2793,"children":2794},{},[2795,2800,2805,2810],{"type":43,"tag":88,"props":2796,"children":2797},{},[2798],{"type":49,"value":2799},"Single web service or static site",{"type":43,"tag":88,"props":2801,"children":2802},{},[2803],{"type":49,"value":2804},"Quick prototypes or demos",{"type":43,"tag":88,"props":2806,"children":2807},{},[2808],{"type":49,"value":2809},"When you don't need a render.yaml file in your repo",{"type":43,"tag":88,"props":2811,"children":2812},{},[2813],{"type":49,"value":2814},"Adding databases or cron jobs to existing projects",{"type":43,"tag":156,"props":2816,"children":2818},{"id":2817},"prerequisites-for-direct-creation",[2819],{"type":49,"value":2820},"Prerequisites for Direct Creation",{"type":43,"tag":52,"props":2822,"children":2823},{},[2824,2829],{"type":43,"tag":58,"props":2825,"children":2826},{},[2827],{"type":49,"value":2828},"Repository must be pushed to a Git provider.",{"type":49,"value":2830}," Render clones your repository to build and deploy services.",{"type":43,"tag":528,"props":2832,"children":2834},{"className":530,"code":2833,"language":532,"meta":533,"style":533},"git remote -v  # Verify remote exists\ngit push origin main  # Ensure code is pushed\n",[2835],{"type":43,"tag":120,"props":2836,"children":2837},{"__ignoreMap":533},[2838,2859],{"type":43,"tag":539,"props":2839,"children":2840},{"class":541,"line":542},[2841,2845,2849,2854],{"type":43,"tag":539,"props":2842,"children":2843},{"style":546},[2844],{"type":49,"value":549},{"type":43,"tag":539,"props":2846,"children":2847},{"style":552},[2848],{"type":49,"value":555},{"type":43,"tag":539,"props":2850,"children":2851},{"style":552},[2852],{"type":49,"value":2853}," -v",{"type":43,"tag":539,"props":2855,"children":2856},{"style":1271},[2857],{"type":49,"value":2858},"  # Verify remote exists\n",{"type":43,"tag":539,"props":2860,"children":2861},{"class":541,"line":712},[2862,2866,2870,2874,2879],{"type":43,"tag":539,"props":2863,"children":2864},{"style":546},[2865],{"type":49,"value":549},{"type":43,"tag":539,"props":2867,"children":2868},{"style":552},[2869],{"type":49,"value":2375},{"type":43,"tag":539,"props":2871,"children":2872},{"style":552},[2873],{"type":49,"value":2380},{"type":43,"tag":539,"props":2875,"children":2876},{"style":552},[2877],{"type":49,"value":2878}," main",{"type":43,"tag":539,"props":2880,"children":2881},{"style":1271},[2882],{"type":49,"value":2883},"  # Ensure code is pushed\n",{"type":43,"tag":52,"props":2885,"children":2886},{},[2887],{"type":49,"value":2888},"Supported providers: GitHub, GitLab, Bitbucket",{"type":43,"tag":52,"props":2890,"children":2891},{},[2892],{"type":49,"value":2893},"If no remote exists, stop and ask the user to create\u002Fpush a remote or switch to Docker image deploy.",{"type":43,"tag":52,"props":2895,"children":2896},{},[2897,2902],{"type":43,"tag":58,"props":2898,"children":2899},{},[2900],{"type":49,"value":2901},"Note:",{"type":49,"value":2903}," MCP does not support creating image-backed services. Use the Dashboard\u002FAPI for prebuilt Docker image deploys.",{"type":43,"tag":156,"props":2905,"children":2907},{"id":2906},"direct-creation-workflow",[2908],{"type":49,"value":2909},"Direct Creation Workflow",{"type":43,"tag":52,"props":2911,"children":2912},{},[2913,2915,2920],{"type":49,"value":2914},"Use the concise steps below, and refer to ",{"type":43,"tag":1336,"props":2916,"children":2918},{"href":2917},"references\u002Fdirect-creation.md",[2919],{"type":49,"value":2917},{"type":49,"value":2921}," for full MCP command examples and follow-on configuration.",{"type":43,"tag":414,"props":2923,"children":2925},{"id":2924},"step-1-analyze-codebase-1",[2926],{"type":49,"value":1473},{"type":43,"tag":52,"props":2928,"children":2929},{},[2930,2932,2936],{"type":49,"value":2931},"Use ",{"type":43,"tag":1336,"props":2933,"children":2934},{"href":1481},[2935],{"type":49,"value":1481},{"type":49,"value":2937}," to determine runtime, build\u002Fstart commands, env vars, and datastores.",{"type":43,"tag":414,"props":2939,"children":2941},{"id":2940},"step-2-create-resources-via-mcp",[2942],{"type":49,"value":2943},"Step 2: Create Resources via MCP",{"type":43,"tag":52,"props":2945,"children":2946},{},[2947,2949,2953],{"type":49,"value":2948},"Create the service (web or static) and any required databases or key-value stores. See ",{"type":43,"tag":1336,"props":2950,"children":2951},{"href":2917},[2952],{"type":49,"value":2917},{"type":49,"value":177},{"type":43,"tag":52,"props":2955,"children":2956},{},[2957],{"type":49,"value":2958},"If MCP returns an error about missing Git credentials or repo access, stop and guide the user to connect their Git provider in the Render Dashboard, then retry.",{"type":43,"tag":414,"props":2960,"children":2962},{"id":2961},"step-3-configure-environment-variables",[2963],{"type":49,"value":2964},"Step 3: Configure Environment Variables",{"type":43,"tag":52,"props":2966,"children":2967},{},[2968,2970,2974],{"type":49,"value":2969},"Add required env vars via MCP after creation. See ",{"type":43,"tag":1336,"props":2971,"children":2972},{"href":2917},[2973],{"type":49,"value":2917},{"type":49,"value":177},{"type":43,"tag":52,"props":2976,"children":2977},{},[2978],{"type":49,"value":2979},"Remind the user that secrets can be set in the Dashboard if they prefer not to pass them via MCP.",{"type":43,"tag":414,"props":2981,"children":2983},{"id":2982},"step-4-verify-deployment",[2984],{"type":49,"value":2985},"Step 4: Verify Deployment",{"type":43,"tag":52,"props":2987,"children":2988},{},[2989,2991,2995],{"type":49,"value":2990},"Check deploy status, logs, and metrics. See ",{"type":43,"tag":1336,"props":2992,"children":2993},{"href":2917},[2994],{"type":49,"value":2917},{"type":49,"value":177},{"type":43,"tag":1453,"props":2997,"children":2998},{},[],{"type":43,"tag":52,"props":3000,"children":3001},{},[3002,3004,3009],{"type":49,"value":3003},"For service discovery, configuration details, quick commands, and common issues, see ",{"type":43,"tag":1336,"props":3005,"children":3007},{"href":3006},"references\u002Fdeployment-details.md",[3008],{"type":49,"value":3006},{"type":49,"value":177},{"type":43,"tag":1453,"props":3011,"children":3012},{},[],{"type":43,"tag":44,"props":3014,"children":3016},{"id":3015},"post-deploy-verification-and-basic-triage-all-methods",[3017],{"type":49,"value":3018},"Post-deploy verification and basic triage (All Methods)",{"type":43,"tag":52,"props":3020,"children":3021},{},[3022],{"type":49,"value":3023},"Keep this short and repeatable. If any check fails, fix it before redeploying.",{"type":43,"tag":84,"props":3025,"children":3026},{},[3027,3040,3045,3050],{"type":43,"tag":88,"props":3028,"children":3029},{},[3030,3032,3038],{"type":49,"value":3031},"Confirm the latest deploy is ",{"type":43,"tag":120,"props":3033,"children":3035},{"className":3034},[],[3036],{"type":49,"value":3037},"live",{"type":49,"value":3039}," and serving traffic",{"type":43,"tag":88,"props":3041,"children":3042},{},[3043],{"type":49,"value":3044},"Hit the health endpoint (or root) and verify a 200 response",{"type":43,"tag":88,"props":3046,"children":3047},{},[3048],{"type":49,"value":3049},"Scan recent error logs for a clear failure signature",{"type":43,"tag":88,"props":3051,"children":3052},{},[3053,3055,3061],{"type":49,"value":3054},"Verify required env vars and port binding (",{"type":43,"tag":120,"props":3056,"children":3058},{"className":3057},[],[3059],{"type":49,"value":3060},"0.0.0.0:$PORT",{"type":49,"value":1344},{"type":43,"tag":52,"props":3063,"children":3064},{},[3065,3067],{"type":49,"value":3066},"Detailed checklist and commands: ",{"type":43,"tag":1336,"props":3068,"children":3070},{"href":3069},"references\u002Fpost-deploy-checks.md",[3071],{"type":49,"value":3069},{"type":43,"tag":52,"props":3073,"children":3074},{},[3075,3077],{"type":49,"value":3076},"If the service fails to start or health checks time out, use the basic triage guide:\n",{"type":43,"tag":1336,"props":3078,"children":3080},{"href":3079},"references\u002Ftroubleshooting-basics.md",[3081],{"type":49,"value":3079},{"type":43,"tag":156,"props":3083,"children":3085},{"id":3084},"troubleshooting",[3086],{"type":49,"value":3087},"Troubleshooting",{"type":43,"tag":414,"props":3089,"children":3091},{"id":3090},"escalated-network-access",[3092],{"type":49,"value":3093},"Escalated Network Access",{"type":43,"tag":52,"props":3095,"children":3096},{},[3097,3099,3104],{"type":49,"value":3098},"If deployment fails due to network issues (timeouts, DNS errors, connection resets), rerun the deploy with escalated permissions (use ",{"type":43,"tag":120,"props":3100,"children":3102},{"className":3101},[],[3103],{"type":49,"value":175},{"type":49,"value":3105},"). The deploy requires escalated network access when sandbox networking blocks outbound requests.",{"type":43,"tag":52,"props":3107,"children":3108},{},[3109],{"type":49,"value":3110},"Example guidance to the user:",{"type":43,"tag":528,"props":3112,"children":3115},{"className":3113,"code":3114,"language":49},[592],"The deploy needs escalated network access to deploy to Render. I can rerun the command with escalated permissions—want me to proceed?\n",[3116],{"type":43,"tag":120,"props":3117,"children":3118},{"__ignoreMap":533},[3119],{"type":49,"value":3114},{"type":43,"tag":52,"props":3121,"children":3122},{},[3123,3125,3131],{"type":49,"value":3124},"Optional: If you need deeper diagnostics (metrics\u002FDB checks\u002Ferror catalog), suggest installing the\n",{"type":43,"tag":120,"props":3126,"children":3128},{"className":3127},[],[3129],{"type":49,"value":3130},"render-debug",{"type":49,"value":3132}," skill. It is not required for the core deploy flow.",{"type":43,"tag":3134,"props":3135,"children":3136},"style",{},[3137],{"type":49,"value":3138},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":3140,"total":3262},[3141,3160,3177,3193,3208,3229,3246],{"slug":3142,"name":3142,"fn":3143,"description":3144,"org":3145,"tags":3146,"stars":22,"repoUrl":23,"updatedAt":3159},"algorithmic-art","create generative art with p5.js","Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3147,3150,3153,3156],{"name":3148,"slug":3149,"type":15},"Creative","creative",{"name":3151,"slug":3152,"type":15},"Generative Art","generative-art",{"name":3154,"slug":3155,"type":15},"Graphics","graphics",{"name":3157,"slug":3158,"type":15},"JavaScript","javascript","2026-07-13T06:41:35.540127",{"slug":3161,"name":3161,"fn":3162,"description":3163,"org":3164,"tags":3165,"stars":22,"repoUrl":23,"updatedAt":3176},"antfu","configure JavaScript projects with Anthony Fu's tools","Anthony Fu's opinionated tooling and conventions for JavaScript\u002FTypeScript projects. Use when setting up new projects, configuring ESLint\u002FPrettier alternatives, monorepos, library publishing, or when the user mentions Anthony Fu's preferences.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3166,3169,3172,3173],{"name":3167,"slug":3168,"type":15},"Best Practices","best-practices",{"name":3170,"slug":3171,"type":15},"Engineering","engineering",{"name":3157,"slug":3158,"type":15},{"name":3174,"slug":3175,"type":15},"TypeScript","typescript","2026-07-13T06:43:13.153309",{"slug":3178,"name":3178,"fn":3179,"description":3180,"org":3181,"tags":3182,"stars":22,"repoUrl":23,"updatedAt":3192},"brand-guidelines","apply Anthropic brand guidelines","Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3183,3186,3189],{"name":3184,"slug":3185,"type":15},"Branding","branding",{"name":3187,"slug":3188,"type":15},"Design","design",{"name":3190,"slug":3191,"type":15},"Typography","typography","2026-07-13T06:43:06.077629",{"slug":3194,"name":3194,"fn":3195,"description":3196,"org":3197,"tags":3198,"stars":22,"repoUrl":23,"updatedAt":3207},"canvas-design","create visual art and design assets","Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3199,3200,3201,3204],{"name":3148,"slug":3149,"type":15},{"name":3187,"slug":3188,"type":15},{"name":3202,"slug":3203,"type":15},"Images","images",{"name":3205,"slug":3206,"type":15},"PDF","pdf","2026-07-13T06:39:58.803113",{"slug":3209,"name":3209,"fn":3210,"description":3211,"org":3212,"tags":3213,"stars":22,"repoUrl":23,"updatedAt":3228},"ci-cd-containerization-advisor","design CI\u002FCD pipelines for Kotlin applications","Design reproducible build, image, and deployment pipelines for Kotlin plus Spring applications, including CI verification, layered containers, rollout safety, and deployment-time migration coordination. Use when creating or improving Dockerfiles, CI workflows, image hardening, Kubernetes manifests, release gates, or deployment strategies for Spring Boot services, especially where build reproducibility and operational safety matter.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3214,3217,3220,3221,3222,3225],{"name":3215,"slug":3216,"type":15},"CI\u002FCD","ci-cd",{"name":3218,"slug":3219,"type":15},"Containers","containers",{"name":17,"slug":18,"type":15},{"name":3170,"slug":3171,"type":15},{"name":3223,"slug":3224,"type":15},"Kotlin","kotlin",{"name":3226,"slug":3227,"type":15},"Spring","spring","2026-07-13T06:41:47.83899",{"slug":3230,"name":3230,"fn":3231,"description":3232,"org":3233,"tags":3234,"stars":22,"repoUrl":23,"updatedAt":3245},"cloudflare-deploy","deploy applications to Cloudflare","Deploy applications and infrastructure to Cloudflare using Workers, Pages, and related platform services. Use when the user asks to deploy, host, publish, or set up a project on Cloudflare.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3235,3238,3241,3244],{"name":3236,"slug":3237,"type":15},"Cloudflare","cloudflare",{"name":3239,"slug":3240,"type":15},"Cloudflare Pages","cloudflare-pages",{"name":3242,"slug":3243,"type":15},"Cloudflare Workers","cloudflare-workers",{"name":17,"slug":18,"type":15},"2026-07-17T06:04:42.853896",{"slug":3247,"name":3247,"fn":3248,"description":3249,"org":3250,"tags":3251,"stars":22,"repoUrl":23,"updatedAt":3261},"compose-ui-control","interact with Compose Desktop applications","Control a running Compose Desktop application via HTTP. Use when you need to interact with UI elements, click buttons, enter text, wait for elements to appear, or capture screenshots in a Compose Desktop app that has compose-ui-test-server enabled.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3252,3255,3258],{"name":3253,"slug":3254,"type":15},"Automation","automation",{"name":3256,"slug":3257,"type":15},"Desktop","desktop",{"name":3259,"slug":3260,"type":15},"UI Components","ui-components","2026-07-13T06:40:38.798626",128,{"items":3264,"total":3389},[3265,3281,3290,3299,3310,3320,3329,3338,3347,3357,3366,3379],{"slug":3266,"name":3266,"fn":3267,"description":3268,"org":3269,"tags":3270,"stars":3278,"repoUrl":3279,"updatedAt":3280},"mps-aspect-accessories","configure JetBrains MPS module dependencies","Wire MPS module and model dependencies, used languages, used devkits, extended languages, runtime solutions, accessory models, and language\u002Fdependency versions. Use when adding\u002Fremoving module dependencies, importing languages or devkits into a model, declaring runtime solutions, or shipping accessory content visible to consumers without explicit import.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3271,3274,3277],{"name":3272,"slug":3273,"type":15},"Architecture","architecture",{"name":3275,"slug":3276,"type":15},"Configuration","configuration",{"name":3170,"slug":3171,"type":15},1650,"https:\u002F\u002Fgithub.com\u002FJetBrains\u002FMPS","2026-07-17T06:06:57.311661",{"slug":3282,"name":3282,"fn":3283,"description":3284,"org":3285,"tags":3286,"stars":3278,"repoUrl":3279,"updatedAt":3289},"mps-aspect-actions","define and edit MPS node factories","Use when defining or editing MPS node factories (the \"actions\" aspect) — `NodeFactories` roots, per-concept `NodeFactory` setup functions that initialize a freshly created node and optionally copy data from a replaced `sampleNode`, plus the actions aspect's `CopyPasteHandlers` and `PasteWrappers` roots. Reach for this skill when a substitution, side transform, completion replacement, or `add new initialized(...)` should preserve fields from the node it is replacing, or when defaults set in a constructor are not enough.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3287,3288],{"name":3272,"slug":3273,"type":15},{"name":3170,"slug":3171,"type":15},"2026-07-17T06:04:48.066901",{"slug":3291,"name":3291,"fn":3292,"description":3293,"org":3294,"tags":3295,"stars":3278,"repoUrl":3279,"updatedAt":3298},"mps-aspect-behavior","define and edit MPS concept behavior","Use when defining or editing MPS `ConceptBehavior` — per-concept methods (non-virtual \u002F virtual \u002F abstract \u002F static \u002F virtual static), constructors, virtual dispatch (MRO), super and interface-default calls (`super\u003CInterface>.method`), overriding methods from `lang.core.behavior` interfaces such as `ScopeProvider.getScope` \u002F `INamedConcept.getName` \u002F `BaseConcept.getPresentation`, calling sibling methods (`LocalBehaviorMethodCall`) and behavior methods from other aspects via `node.method(...)`. Reach for this skill whenever the task involves authoring or modifying `\u003Clang>\u002FlanguageModels\u002Fbehavior.mps`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3296,3297],{"name":3272,"slug":3273,"type":15},{"name":3170,"slug":3171,"type":15},"2026-07-13T06:45:21.757084",{"slug":3300,"name":3300,"fn":3301,"description":3302,"org":3303,"tags":3304,"stars":3278,"repoUrl":3279,"updatedAt":3309},"mps-aspect-constraints","define JetBrains MPS language constraints","Use when defining or editing MPS language constraints — property validators \u002F setters \u002F getters, referent search scopes (imperative or inherited via `ScopeProvider.getScope`), `referentSetHandler` side effects, default-scope blocks, `canBeChild` \u002F `canBeParent` \u002F `canBeAncestor` \u002F `canBeRoot` placement rules, `defaultConcreteConcept` for abstract concepts, `set \u003Cread-only>` and `{name}` aliasing, and scope helpers (`SimpleRoleScope`, `ListScope`, `CompositeScope`, `HidingByNameScope`). Reach for this skill whenever the task involves authoring or modifying `\u003Clang>\u002FlanguageModels\u002Fconstraints.mps`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3305,3306],{"name":3272,"slug":3273,"type":15},{"name":3307,"slug":3308,"type":15},"Code Analysis","code-analysis","2026-07-23T05:41:33.639365",{"slug":3311,"name":3311,"fn":3312,"description":3313,"org":3314,"tags":3315,"stars":3278,"repoUrl":3279,"updatedAt":3319},"mps-aspect-dataflow","define and debug MPS dataflow builders","Use when defining or debugging MPS dataflow builders for a concept — control\u002Fdata flow declarations that drive reachability analysis and variable-use checking. Covers DataFlowBuilderDeclaration, BuilderBlock, emit instructions (code for, jump, ifjump, label, read, write, ret, mayBeUnreachable), positions (AfterPosition, BeforePosition, LabelPosition), the jetbrains.mps.lang.dataFlow language, the NodeParameter implicit, BL+smodel usage inside builder bodies, and IBuilderMode for advanced analyses such as nullable\u002Fnon-null tracking.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3316],{"name":3317,"slug":3318,"type":15},"Data Analysis","data-analysis","2026-07-13T06:45:19.114674",{"slug":3321,"name":3321,"fn":3322,"description":3323,"org":3324,"tags":3325,"stars":3278,"repoUrl":3279,"updatedAt":3328},"mps-aspect-editor","define MPS editor layouts","Use when creating or changing MPS editor definitions — the overall workflow from scaffolding a `ConceptEditorDeclaration` through componentizing reusable `EditorComponentDeclaration`s, refining cell models and cell layouts, applying style sheets and indent-layout style items, wiring smart references, leveraging inheritance via super-concepts and interfaces, inspecting (`print_node_json`, `show_node_representation`) and validating (`check_root_node_problems`). Covers `jetbrains.mps.lang.editor` cell models (`CellModel_RefNode`\u002F`CellModel_RefNodeList`\u002F`CellModel_RefCell`\u002F`CellModel_Property`\u002F`CellModel_Constant`), layout choices, and JSON blueprints for common editor shapes. For the non-layout side (action maps, keymaps, transformation\u002Fsubstitute menus) use `mps-aspect-editor-menus-and-keymaps`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3326,3327],{"name":3187,"slug":3188,"type":15},{"name":3259,"slug":3260,"type":15},"2026-07-23T05:41:56.638151",{"slug":3330,"name":3330,"fn":3331,"description":3332,"org":3333,"tags":3334,"stars":3278,"repoUrl":3279,"updatedAt":3337},"mps-aspect-editor-menus-and-keymaps","author MPS editor menus and keymaps","Use when authoring the **non-layout** parts of the MPS editor aspect — what happens when the user types, presses a key, triggers completion, pastes, or invokes a context action. Covers action maps (`CellActionMapDeclaration`), cell keymaps (`CellKeyMapDeclaration`), transformation menus (`TransformationMenu_Default` \u002F `_Named` \u002F `_Contribution`), substitute menus (`SubstituteMenu_Default` \u002F `SubstituteMenu` \u002F contributions), side transforms (LEFT\u002FRIGHT), legacy cell menus, paste wrappers and copy-paste handlers (in the actions language), completion styling, reference presentation, two-step deletion, and the editor selection API. Trigger terms: `actionMap`, `keyMap`, `delete_action_id`, `transformationMenu`, `substituteMenu`, `Ctrl+Space`, `Ctrl+Alt+B`, side transform, paste wrapper, completion styling, `PasteWrappers`, `CopyPasteHandlers`. For the **layout** side (cells, layouts, style sheets) use `mps-aspect-editor` instead.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3335,3336],{"name":3170,"slug":3171,"type":15},{"name":3259,"slug":3260,"type":15},"2026-07-23T05:41:49.666535",{"slug":3339,"name":3339,"fn":3340,"description":3341,"org":3342,"tags":3343,"stars":3278,"repoUrl":3279,"updatedAt":3346},"mps-aspect-generation-plan","modify MPS generation plans","Use when defining or modifying an MPS generation plan — explicit ordering of generators, checkpoints for cross-model reference resolution, forks for parallel branches, IncludePlan composition, conditional PlanContribution activation, ParameterEquals\u002FConceptListSelector fork selectors, and InitModelAttributes for targetFacet routing. Apply when working with @genplan models, the jetbrains.mps.lang.generator.plan language, attaching plans via DevKits or the Custom generation facet, or debugging cross-model mapping label resolution.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3344,3345],{"name":3272,"slug":3273,"type":15},{"name":3170,"slug":3171,"type":15},"2026-07-13T06:44:59.507855",{"slug":3348,"name":3348,"fn":3349,"description":3350,"org":3351,"tags":3352,"stars":3278,"repoUrl":3279,"updatedAt":3356},"mps-aspect-generator","define JetBrains MPS generator rules","Use when defining or modifying MPS generators — author a generator module, add or edit root\u002Freduction\u002Fweaving\u002Fpattern mapping rules, attach template macros ($COPY_SRC, $LOOP, $IF, $PROPERTY, $REF, $SWITCH, $MAP_SRC, $WEAVE, $INSERT, $LABEL, $TRACE, $VAR), wire mapping labels, build template switches, write pre\u002Fpost mapping scripts, navigate `genContext`, or debug \"rule didn't fire\", missing references, empty output, infinite reduction loops, and generated-Java compile failures.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3353,3354,3355],{"name":3272,"slug":3273,"type":15},{"name":3307,"slug":3308,"type":15},{"name":3170,"slug":3171,"type":15},"2026-07-17T06:06:58.042999",{"slug":3358,"name":3358,"fn":3359,"description":3360,"org":3361,"tags":3362,"stars":3278,"repoUrl":3279,"updatedAt":3365},"mps-aspect-intentions","define and edit MPS intentions","Use when defining or editing MPS intentions (the Alt+Enter context-action aspect) — adding `IntentionDeclaration` roots, parameterized or surround-with variants, description\u002FisApplicable\u002Fexecute blocks, child-filter functions, factory-initialized AST splicing, or debugging why an intention is not offered. Lives in the language's `intentions` model and uses `jetbrains.mps.lang.intentions`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3363,3364],{"name":3272,"slug":3273,"type":15},{"name":3170,"slug":3171,"type":15},"2026-07-23T05:41:48.692899",{"slug":3367,"name":3367,"fn":3368,"description":3369,"org":3370,"tags":3371,"stars":3278,"repoUrl":3279,"updatedAt":3378},"mps-aspect-migrations","author and debug MPS migration scripts","Use when authoring or debugging MPS migration scripts that upgrade user models after a language definition changes — covers jetbrains.mps.lang.migration (MigrationScript class-based, PureMigrationScript declarative, MoveConcept\u002FMoveContainmentLink\u002FMoveReferenceLink\u002FMoveProperty, ordering via OrderDependency, data exchange via putData\u002FgetData, RefactoringLog, ConceptMigrationReference) and jetbrains.mps.lang.script Enhancement Scripts (MigrationScript with MigrationScriptPart_Instance, ExtractInterfaceMigration, FactoryMigrationScriptPart, CommentMigrationScriptPart) — when a model needs version-gated upgrade, concept rename or removal, link or property rename, instance-level transformation, or composition of migration steps.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3372,3375],{"name":3373,"slug":3374,"type":15},"Debugging","debugging",{"name":3376,"slug":3377,"type":15},"Migration","migration","2026-07-13T06:45:20.372122",{"slug":3380,"name":3380,"fn":3381,"description":3382,"org":3383,"tags":3384,"stars":3278,"repoUrl":3279,"updatedAt":3388},"mps-aspect-structure-concepts","define concepts in MPS structure aspect","Define concepts, interface concepts, enumerations, and constrained data types in an MPS language's `structure` aspect. Covers smart-reference detection, alias rules, cardinality, INamedConcept usage, bulk creation, and the full `mps_mcp_alter_structure` \u002F `mps_mcp_query_structure` reference. Use when authoring or modifying a language's structure model.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3385],{"name":3386,"slug":3387,"type":15},"Data Modeling","data-modeling","2026-07-23T05:41:30.705975",188]